文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>rsync服务器

rsync服务器

时间:2010-07-21  来源:szxsztszk

一.教程:

1.从原始网站下载:http://rsync.samba.org/ftp/rsync/

2.[root@localhost bin]#./configure

[root@localhost bin]#make

[root@localhost bin]#make install

说明一点,客户机和服务器都要安装rsync。客户机以客户端方式运行rsync,服务器端 以服务器方式运行rsync,它监听873端口。

3.运行rsync

/usr/local/bin/rsync --daemon

验证启动是否成功:

netstat -na|grep 873

4.配置rsync

简单配置:编辑/etc/rsyncd.conf文件如下:

#全局配置部分

secrets file = /etc/rsyncd.secrets 认证用户名和密码文件的名称和位置

motd file = /etc/rsyncd.motd 欢迎信息文件名称和存放位置(此文件没有,可以自行添加)

read only = yes

list = yes

uid = root

gid = root

#hosts allow = 10.4.5.213

#hosts deny = 10.4.5.0/24

use chroot = no

max connections = 5

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

#模块配置部分

[paolo]

comment = Paolo 's directory

path = /home/test/software

auth users = rsync

#secrets file = /etc/rsyncd.secrets

5.生成验证证文件

echo "rsync:rsync_password" >> /etc/rsyncd.secrets

chmod 600 /etc/rsyncd.secrets

6.在客户端服务器同步服务器上的文件

rsync -vzrtopg --delete --progress [email protected]::paolo /china/

或加上--password-file=/etc/rsyncd.secrets选项

上面的命令把10.4.5.161服务器上的paolo模块中的目录的文件传送到本机 /china目录中,并删除本机/china目录中在161服务器paolo模块指定目录中没有的文件。以使两台计算机的目录文件同步。

  二.CU教程 http://bbs.chinaunix.net/viewthread.php?tid=877009&highlight=rsync   ---------------------------------------------- 三: 应用说明

正如很多人知道的那样,Rsync可是开源同步软件中的老大哥。很多人(当然也包括我自己)都在使用 它来进行同步、备份工作。它的功能强大,应用灵活,就不多说了。如果对Rsync前世今生很感兴趣,那么一会看看简介,然后到他们官方网站好好看看。

虽然Rsync很强大,但是它并没有直接支持加密传输。也就是说,它是直接明文传输的,对于一些安全 要求高的数据,那就不太保险了。不信?你可以用抓包工具试试看。

如果要传输保密文件,那怎么办?放心,Rsync提供了ssh通道功能。也就是通过ssh安全通道来 传输,传输过程中,数据是经过ssh加密的。不信?你还是可以抓包看看。

这就是我们要进行的工作了,配置一个具有ssh安全通道的,安全级别高的同步体系。

[编辑] 加密传输

我们利用SSH来达到安全通道的目的。SSH 的 RSA 和 DSA 认证协议的基础是一对专门生成的密钥,分别叫做 专用密钥和 公用密钥(简称 私钥和公钥,下面我们都使用简称)。使用这些基于密钥的认证系统的优势在于:在许多情况下,有可能不必手工输入密码就能建立起安全的连接。

尽管基于密钥的认证协议相当安全,但是如果不注意保护,把私钥泄露了,那么别人也就可以登录到有公钥 的服务器。那就很不安全了。

因此居于安全考虑,我们进行的同步配置,是居于普通用户来进行备份的。

[编辑] 同步方向

在这里采用的,不是常见的C/S模式,即源服务器运行rsync --daemon模式,备份服务器主动同步。而是采用SSH通道模式,不需要配置rsync --daemon。从源服务器直接同步到备份服务器。

[编辑] 环境说明

我配置的是A、B 两台主机,A主机做为源服务器,B主机作为客户端。

[编辑] 硬件环境

两台服务器的配置一样,硬件配置如下:

单志强2.4G CPU
2G 内存
36G SCSI硬盘
1G inter网卡

[编辑] 网络环境

两台服务器在同一个机房,但是不同网段。IP地址分别设置如下:

A服务器的IP地址:
192.168.8.8
B服务器的IP地址:
192.168.11.11


[编辑] 系统环境

操作系统:

A、B两台服务器均安装了FreeBSD 6.2-RELEASE-p2(通过make world升级到最新)。

SSH是系统自带的版本:

# ssh -V
OpenSSH_4.5p1 FreeBSD-20061110, OpenSSL 0.9.7e-p1 25 Oct 2004

[编辑] 软件简介

由于我们是在unix/linux下使用SSH和RSYNC,因此仅仅介绍SSH和RSYNC,而不 介绍系统以及其他软件。

[编辑] SSH的简介

SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺 骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为 FTP、Pop、甚至为PPP提供一个安全的"通道"。

最初的SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用 OpenSSH。OpenSSH是SSH的替代软件包,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。目前所发行的开源 UNIX/Linux,默认都会带有OpenSSH(一些可能需要你额外的安装一下)。

如果你喜欢的话,也可以安装SSH,他虽然有限制,但是对于非商业用户,是可以免费使用的。

 相关链接如下:
http://openssh.org
http://ssh.com/products/ssh_secure_shell/

[编辑] RSYNC的简介

在RSYNC的官方网站上,对于RSYNC的介绍非常简单。

rsync 是一个开放源码的快速的文件同步工具,是在GUN的GPL2协议下发布的。
所以任何人都可以免费的使用设置修改和再发行它。rsync的作者是 Wayne Davison。
 相关链接如下:
http://rsync.samba.org/

[编辑] 软件安装

[编辑] SSH的安装

由于系统会自带有SSH,我们就直接使用系统自带的SSH,而不再单独安装。

我会另外写一个SSH安装配置的专题文章。

[编辑] RSYNC的安装

我是在FreeBSD上进行的安装配置,因此同时给出利用FreeBSD的ports安装和手工安装 两种方式。其中手工安装方式,也可以在Linux下进行。

[编辑] ports方式安装

在开始ports安装之前,先做一次ports更新。这样做的目的是让ports保持最新,并且让通 过ports安装的软件是最新的。

 用CVSUP更新:
# cvsup -L2 -g /opt/etc/ports-supfile
 你需要根据自己的ports-supfile文件路径来指定。

进入rsync的ports目录:

 # cd /usr/ports/net/rsync/

查看软件版本信息:

# cat distinfo
MD5 (rsync-2.6.9.tar.gz) = 996d8d8831dbca17910094e56dcb5942
SHA256 (rsync-2.6.9.tar.gz) = ca437301becd890e73300bc69a39189ff1564baa761948ff149b3dd7bde633f9
SIZE (rsync-2.6.9.tar.gz) = 811841

由此我们可以得知rsync的版本是 2.6.9,也就是目前最新的发行版本。

选择配置:

 # make config
[ ] POPT_PORT Use popt from devel/popt instead of bundled one
[X] TIMELIMIT Time limit patch
[X] FLAGSP File system flags support patch, adds --flags
[ ] ACLSP ACL support patch, adds --acls
[X] SSH Use SSH instead of RSH

在出现选项界面里,通过移动上下键和空格键,选择SSH,也就是用SSH替换RSH。其他的默认就可 以了。

完成安装:

# make install clean

很简单吧?使用ports的好处就是,安装太方便了。只要执行 make install 它会自动下载,编译,安装。clean 是告诉ports,安装完后,清楚源码文件和其他过程文件。

[编辑] 手工安装

*下载安装包

下载页面:

 http://rsync.samba.org/ftp/rsync/

具体下载链接:

 http://rsync.samba.org/ftp/rsync/rsync-2.6.9.tar.gz

*解压和配置

 # tar -zxvf rsync-2.6.9.tar.gz
# cd rsync-2.6.9
# ./configure --disable-debug --with-rsh=ssh
 说明:
由于 --with-rsh=默认就是ssh,所以也可以不显式指定这个配置项;
还可以通过 --prefix=/path 来指定安装目录,默认则安装到/usr/local/bin目录;
关闭调试模式 --disable-debug;
也可以通过 ./configure --help 查看更多选项,再根据自己的需要来设定。

*编译和安装

 # make
# make install

至此,没有出现什么错误的话,整个手工安装过程就完毕了。

[编辑] ssh的配置

在这里的配置,当然不是指如何配置SSH服务啦。而是指配置用来SSH登录相关的帐户的公钥、私钥。

注意: 备份服务器必须运行sshd服务。

[编辑] 创建帐户

在A、B两台服务器上各创建一个普通帐户,不需要设置密码。

在FreeBSD下创建帐户:

# pw user add -d /home/mybackup -n mybackup

在Linux下创建帐户:

# useradd -d /home/mybackup mybackup

[编辑] 生成公钥和私钥

这些操作是在同步源服务器,就是有需要做备份数据的服务器。这里是指A主机。

首先,切换到mybackup帐户以及该帐户的用户目录下:

# su mybackup
$ cd ~
$ pwd
/home/mybackup
$ mkdir .ssh
$ cd .ssh
$ pwd
/usr/home/mybackup/.ssh


生成公钥、私钥:

$ ssh-keygen -t dsa -b 1024
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mybackup/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mybackup/.ssh/id_dsa.
Your public key has been saved in /home/mybackup/.ssh/id_dsa.pub.
The key fingerprint is:
20:7c:c3:b4:69:a7:e1:af:f3:e3:ae:e7:9d:0a:b6:69 [email protected]
注意:
当提示 Enter passphrase (empty for no passphrase): 时,不要输入,直接回车;并且提示 Enter same passphrase again: 时,也直接回车。


这时候,我们就会得到公钥、私钥两个文件在.ssh目录下。我们查看一下:

$ ls -al .ssh
total 8
drwxr-xr-x 2 mybackup mybackup 512 Mar 22 17:48 .
drwxr-xr-x 3 mybackup mybackup 512 Mar 22 17:46 ..
-rw------- 1 mybackup mybackup 672 Mar 22 17:48 id_dsa
-rw-r--r-- 1 mybackup mybackup 613 Mar 22 17:48 id_dsa.pub

其中 id_dsa 是密钥文件,id_dsa.pub 顾名思义,是公钥文件啦。

[编辑] 拷贝到客户端

因为我们之前生成的公钥、密钥,都是在源服务器上操作。而客户端(做备份的服务器)上,需要有刚才生 成的公钥,才能不提示输入密码,直接登录ssh。

使用scp来远程拷贝:

$ scp /home/mybackup/.ssh/id_dsa.pub [email protected]:/home/mybackup/.ssh/authorized_keys

如果用户名、密码和文件路径没有错误,在按提示输入192.168.11.11的root密码后,很 快就会把id_dsa.pub文件拷贝过去了。

[编辑] 测试登录

将公钥拷贝到客户端后,我们来测试下能不能在源服务器上不用输入密码ssh登录客户端服务器。

$ ssh -l mybackup 192.168.11.11

或者:

$ ssh [email protected]

如果没有提示输入密码,就登录到192.168.11.11 服务器,那恭喜你,说明配置成功了。

[编辑] Rsync的配置

事实上,我们在利用SSH通道来运行RSYNC时,是不需要配置一个Rsync服务器的。在这里我们 指的配置,是有两方面,一是运行rsync的参数,一是运行同步控制的脚本。

[编辑] Rsync的常用参数

rsync 常用的运行参数说明:

-v, –verbose 详细模式输出
-c, –checksum 打开校验开关,强制对文件传输进行校验
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, –recursive 对子目录以递归模式处理
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-e, --rsh=COMMAND 指定替代rsh的shell程序
--delete 删除那些DST中SRC没有的文件
--progress 显示备份过程
-t, --times 保持文件时间信息
-z, --compress 对备份的文件在传输时进行压缩处理
--stats 给出某些文件的传输状态

测试rsync同步,将A主机的/opt/etc同步到B主机的/tmp/myetc目录下:

$ rsync -vzrtopg --progress --stats --delete -e ssh /opt/etc [email protected]:/tmp/myetc

然后到B主机的/tmp/myetc目录下看看,是不是发现一个etc目录,并且这个etc目录下面 的文件,跟A主机的/opt/etc目录下面的文件一样。

[编辑] 控制脚本

因为往往备份的目录是相对固定的,如果每次备份都要输入那么长一串,会不会觉得很麻烦呢?那我们写一 个脚本来工作,并且利用crontab来定时定点的执行同步工作。

控制脚本代码如下:

#!/bin/sh
# rsyncer.sh
# author Jonsen Yang( 16hot )
# home
http://www.isyi.com http://16hot.blog.isyi.com
# date 2007-03-20
#

LOCAL_DIR="/opt/etc" ;
REMOTE_USER="mybackup" ;
REMOTE_HOST="192.168.11.11" ;
REMOTE_DIR="/tmp/myetc" ;

RSYNC_CMD="/usr/local/bin/rsync" ;
RSYNC_LOG="/opt/var/log/rsync.log" ;

RSYNC_RUN="${RSYNC_CMD} -vzrtopg --progress --stats --delete -e ssh ${LOCAL_DIR} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}";

${RSYNC_RUN} >> ${RSYNC_LOG} 2>&1;

# end rsyncer.sh


将 rsyncer.sh 脚本保存到 /opt/bin(或者你自己的工作目录)目录下,还要注意保证设置好mybackup用户可以执行的属性。

$ chmod +x /opt/bin/rsyncer.sh

另外,要注意 /opt/var/log/rsync.log 也必须是mybackup帐户可以读写才行。

[编辑] 运行

经过上面的步骤后,可谓万事俱备,只欠运行了。其实也很简单,我们只需要设置crontab,定时执 行备份脚本进行备份就可以了。

$ crontab -e
0 3 * * * /opt/bin/rsyncer.sh

这样,每天凌晨3点,就会自动执行 /opt/bin/rsyncer.sh 进行备份了。

[编辑] 结束语

在开源软件里,很多很多很好用而且分文不收的软件。我们合理的利用这些软件,可以为我们带来很多很多 好处。比如,节省成本,提高工作效率等等。

因此,多学习开源软件,是很好的。


作者: Jonsen Yang( 16hot、 杨明茂 )

[编辑] 附录

[编辑] RSYNC 参数详解

-v, –verbose 详细模式输出
-q, –quiet 精简输出模式
-c, –checksum 打开校验开关,强制对文件传输进行校验
-a, –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, –recursive 对子目录以递归模式处理
-R, –relative 使用相对路径信息
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
-l, --links 保留软链结
-L, --copy-links 想对待常规文件一样处理软链结
--copy-unsafe-links 仅仅拷贝指向SRC路径目录树以外的链结
--safe-links 忽略指向SRC路径目录树以外的链结
-H, --hard-links 保留硬链结
-p, --perms 保持文件权限
-o, --owner 保持文件属主信息
-g, --group 保持文件属组信息
-D, --devices 保持设备文件信息
-t, --times 保持文件时间信息
-S, --sparse 对稀疏文件进行特殊处理以节省DST的空间
-n, --dry-run现实哪些文件将被传输
-W, --whole-file 拷贝文件,不进行增量检测
-x, --one-file-system 不要跨越文件系统边界
-B, --block-size=SIZE 检验算法使用的块尺寸,默认是700字节
-e, --rsh=COMMAND 指定替代rsh的shell程序
--rsync-path=PATH 指定远程服务器上的rsync命令所在路径信息
-C, --cvs-exclude 使用和CVS一样的方法自动忽略文件,用来排除那些不希望传输的文件
--existing 仅仅更新那些已经存在于DST的文件,而不备份那些新创建的文件
--delete 删除那些DST中SRC没有的文件
--delete-excluded 同样删除接收端那些被该选项指定排除的文件
--delete-after 传输结束以后再删除
--ignore-errors 及时出现IO错误也进行删除
--max-delete=NUM 最多删除NUM个文件
--partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
--force 强制删除目录,即使不为空
--numeric-ids 不将数字的用户和组ID匹配为用户名和组名
--timeout=TIME IP超时时间,单位为秒
-I, --ignore-times 不跳过那些有同样的时间和长度的文件
--size-only 当决定是否要备份文件时,仅仅察看文件大小而不考虑文件时间
--modify-window=NUM 决定文件是否时间相同时使用的时间戳窗口,默认为0
-T --temp-dir=DIR 在DIR中创建临时文件
--compare-dest=DIR 同样比较DIR中的文件来决定是否需要备份
-P 等同于 --partial
--progress 显示备份过程
-z, --compress 对备份的文件在传输时进行压缩处理
--exclude=PATTERN 指定排除不需要传输的文件模式
--include=PATTERN 指定不排除而需要传输的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--include-from=FILE 不排除FILE指定模式匹配的文件
--version 打印版本信息
--address 绑定到特定的地址
--config=FILE 指定其他的配置文件,不使用默认的rsyncd.conf文件
--port=PORT 指定其他的rsync服务端口
--blocking-io 对远程shell使用阻塞IO
--stats 给出某些文件的传输状态
--progress 在传输时现实传输过程
--log-format=FORMAT 指定日志文件格式
--password-file=FILE 从FILE中得到密码
--bwlimit=KBPS 限制I/O带宽,KBytes per second
-h, --help 显示帮助信息

-----------------------------------------
rsync 备份方案
rsync 镜像备份
配置 rsync

系统环境
[root@linuxas3 root]# uname -a

Linux linuxas3.9812.net 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux

安装rsync

在AS3 第二张CD上找到rsync-2.5.6-20.i386.rpm

[root@linuxas3 root]# cd /mnt

[root@linuxas3 mnt]# mount cdrom

[root@linuxas3 mnt]# cd cdrom/RedHat/RPMS

[root@linuxas3 RPMS]# rpm -ivh rsync-2.5.6-20.i386.rpm

配置/etc/rsyncd.conf
在rh9,as3系统上rsync安装后,并没有创建rsyncd.conf文档,笔者是自己创建的rsyncd.conf文档

[root@linuxas3 root]# vi /etc/rsyncd.conf

uid=nobody

gid=nobody

max connections=4

use chroot=no

log file=/var/log/rsyncd.log

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

#auth users=root

secrets file=/etc/rsyncd.pwd

[postfix]

path=/var/mail

comment = backup mail

ignore errors

read only = yes

list = no

auth users = postfix

[netkiller]

path=/home/netkiller/web

comment = backup 9812.net

ignore errors

read only = yes

list = no

auth users = netkiller
[pgsqldb]

path=/var/lib/pgsql

comment = backup postgresql database

ignore errors

read only = yes

list = no

选择说明
uid = nobody

gid = nobody

use chroot = no # 不使用chroot

max connections = 4 # 最大连接数为4

pid file = /var/run/rsyncd.pid #进程ID文件

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log # 日志记录文件

secrets file = /etc/rsyncd.pwd # 认证文件名,主要保存用户密码,权限建议设为600,所有者root

[module] # 这里是认证的模块名,在client端需要指定

path = /var/mail # 需要做镜像的目录

comment = backup xxxx # 注释

ignore errors # 可以忽略一些无关的IO错误

read only = yes # 只读

list = no # 不允许列文件

auth users = postfix # 认证的用户名,如果没有这行,则表明是匿名

[other]

path = /path/to...

comment = xxxxx
密码文件

在server端生成一个密码文件/etc/rsyncd.pwd

[root@linuxas3 root]# echo postfix:xxx >>/etc/rsyncd.pwd

[root@linuxas3 root]# echo netkiller:xxx >>/etc/rsyncd.pwd

[root@linuxas3 root]# chmod 600 /etc/rsyncd.pwd

启动rsync daemon

[root@linuxas3 root]# rsync --daemon

测试
[root@linux docbook]# rsync rsync://www.9812.net/netkiller

[root@linux tmp]# rsync rsync://[email protected]/netkiller
Password:
[chen@linux temp]$ rsync -vzrtopg --progress --delete [email protected]::postfix /tmp
Password:
rsync rsync://认证用户@主机/模块
rsync -vzrtopg --progress --delete 认证用户@主机::模块 /mirror目录
添加到启动文件
echo "rsync --daemon" >> /etc/rc.d/rc.local


更复杂的使用,请参考http://rsync.samba.org/
rsync examples
-------------------------
rsync启动:

用xinetd启动后绑在 TCP/873 端口

1.修改启动文件:

#vi /etc/xinetd.d/rsync

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

# allows crc checksumming etc.

service rsync

{

disable = no

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = --daemon

log_on_failure += USERID

}

2.#nmap localhost

#netstat -antp |grep 873
---------------------------------------
其实就是两句话的事情:

1。设置本机能通过SSH无密码认证登陆到目标机器。

2。#crontab -l

01 2 * * * /usr/bin/rsync -Cavzoge ssh --delete /var/www/virtualhost/www.dfed.com 目标机器IP:/var/www/web-back

把本机上指定目录同步到目标机器上;以本机为准,把目标主机上的资料改删的删,改增的增。



相关阅读 更多 +
排行榜 更多 +
胜利女神新的希望小米服手游下载

胜利女神新的希望小米服手游下载

角色扮演 下载
我要当老板伐木工厂游戏下载

我要当老板伐木工厂游戏下载

模拟经营 下载
涡轮螺旋桨最新版下载

涡轮螺旋桨最新版下载

模拟经营 下载