一、介绍: 不想看可以跳过

  Rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync本来是用以取代rcp的一个工具,它当前由 rsync.samba.org维护。Rsync使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行Rsync server的机器也叫backup server,一个Rsync server可同时备份多个client的数据;也可以多个Rsync server备份一个client的数据。

Rsync可以搭配rshssh甚至使用daemon模式。Rsync server会打开一个873的服务通道(port),等待对方Rsync连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。

Rsync支持大多数的类Unix系统,无论是LinuxSolaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsyncSync2NAS

Rsync的基本特点如下:

1.可以镜像保存整个目录树和文件系统;

2.可以很容易做到保持原来文件的权限、时间、软硬链接等;

3.无须特殊权限即可安装;

4.优化的流程,文件传输效率高;

5.可以使用rcpssh等方式来传输文件,当然也可以通过直接的socket连接;

6.支持匿名传输。


二、安装服务端客户端


        实验使用的系统为:centos 6.2 32位 (192.168.5.180{server}  192.168.5.181{client} )


        ①:检查下是否系统已经安装了

这里已经安装成功了。

             如果没有安装,可以到 http://rsync.samba.org/ftp/rsync/ 下载

              然后编译安装下

                       # tar -zxvf            rsync-3.0.9.tar.gz

                          #  ./configure

                           # make && make install            

         ②: 服务端配置文件的配置

可以看到rysnc服务是关闭的(disable = yes),这里把它开启,把disable的值改为no。

③:rsync服务器配置文件/etc/rsyncd.conf
[root@hyj etc]# vim /etc/rsyncd.conf
uid = root
gid = root

port = 873 # 指定运行端口,默认是873,您可以自己指定
hosts allow = 192.168.05.181 #允许访问的客户机
#hosts deny = 0.0.0.0/32 #拒绝访问的
use chroot = no
max connections = 1
timeout=

##
下面这些绿色文件是安装完RSYNC服务后自动生成的文件,当然也可以手动配置到指定路径
pid file = /var/run/rsyncd.pid ##pid文件的存放
lock file = /var/run/rsync.lock ##锁文件的存放位置
log file = /var/log/rsyncd.log ##日志记录文件的存放
#motd file = /etc/rsyncd.motd #欢迎


##上面这段是全局配置,下面的模块可以有
[ test] ## 模块名字,自己命名
p ath = /home/hyj/workspace/test  # 指定文件目录所在位置,这是必须指定
c omment = rsync files  ## 注释
ignore errors  ## 忽略 IO
read only = yes
l ist = no  ## 是否把 rsync 服务器上提供同步数据的目录显示
## 下面这一行,同步验证时用的账号,如果没有这项就是匿名同步,client同步时不用用户名也能同步。
auth users = rsync
secrets file = /etc/rsync.passwd  ## 指定认证文件
④:创建认证文件

[]# vim /etc/rsync.passwd
 (1) :  fynsd:701123 ##用户名:密码。注意这个不是系统用户,只是rsync用户。所以不用useradd。

(名字随便写,只要和上边配置文件里的“auth users”参数一致即可),格式(一行一个用户)

账号:密码

(2)、把密码文件的权限改成600
[root@hyj etc]# chmod 600 /etc/rsync.passwd  ##只能所有者可读,否则报错

wu   ⑤:启动rsync 服务

         #/usr/bin/rsync --daemon

  #lsof -i :873
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
rsync   28651 root    4u  IPv4 1328410      0t0  TCP *:rsync (LISTEN)
rsync   28651 root    5u  IPv6 1328411      0t0  TCP *:rsync (LISTEN) 设置下开机自动启动

⑥: 客户端安装跟服务端一样(只需要创建下配置文件 /etc/rsyncd.conf配置文件)

          检查端口启动情况:

⑦:实验

Rsync的命令格式可以为以下六种:

  rsync [OPTION]... SRC DEST

  rsync [OPTION]... SRC [USER@]HOST:DEST

  rsync [OPTION]... [USER@]HOST:SRC DEST

  rsync [OPTION]... [USER@]HOST::SRC DEST

  rsync [OPTION]... SRC [USER@]HOST::DEST

  rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]

rsync [OPTION]... [USER@]HOST::SRC  DEST
从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
如:rsync -av [email protected]::test /tmp

      rsync [OPTION]... SRC  [USER@]HOST::DEST
从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
如:rsync -av /tmp     [email protected]::test

进行验证。上面验证的时候需要输入密码;此时可以使用下面的命令来实现

#/usr/bin/rsync -vzrtopg --delete --progress [email protected]::test /usr/local/share/rsync_backup --password-file=/etc/rsync.pass

上面这个命令行中-vzrtopg里的v是verbose,z是压缩,r是recursive,topg都是保持文件原有属性如属主、时间的参数(也可以用直接用a来代替rtopg,a为--archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD)。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。


基本功能已经可以实现,详细的还需要进一步的配置。如有不足之处,望大家指出,一起学习!!!






参考资料:http://uplook.blog.51cto.com/443306/394705

http://spring129.blog.51cto.com/705246/145095


rsyncd.conf详细配置:http://hi.baidu.com/cxh1984/item/03bf5816a32febf8dceecabc