下面是rsync的另一种方法,服务器端和客户端使用。
两台机器都需要安装软件包,这里不罗嗦了。
服务器端配置: cat /etc/rsyncd.conf   (主要配置文件)
uid = root   #root用户访问
gid = root   #root组用户访问
use chroot = no     #不能使用chroot
max connections = 9  #最大连接数
#list = yes   #允许列出文件清单
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
hosts allow  = 192.168.200.170 #只允许这个主机访问(注意既是客户端的ip地址)
 
[data]     #发布项
path = /home/data/     #发布的路径
ignore errors
read only = yes   #只读
auth users = root   #认证用户为root
secrets file = /etc/sery.pass    #密码文件
------------------------------------------------------------------------------------
下面是密码文件
[root@mailsvr ~] # cat /etc/sery.pass
root:123456
权限为600

服务器端配置完成

 客户端 配置:
只需要安装rsync包即可
接下来创建密码文件
[root@mailsvr ~] # cat /etc/sery.pass  --->(客户端定义的密码)
123456        #这里只需要输入服务器端密码文件中定义的密码即可。
 
使用命令开始同步
 
[root@mailsvr ~] #  rsync -aSvH --password-file=/etc/sery.pass root@192.168.200.149::data  /home/    -->(将服务器端的备份发布路径同步到本地机的/home下,注意root@192.168.200.149::data冒号后的data既是path = /home/data/发布的路径)


如果再做此步骤,抛出如下异常,具体的日志:
[root@xyh ~]# rsync -aSvH --password-file=/etc/sery.pass root@192.168.200.149::data /home                                                                                                
rsync: failed to connect to 192.168.200.149: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(107) [receiver=2.6.8]   
解决方法:客户端和服务器端都关闭防火墙   service iptables stop即可                                                                                          

 
解释:
--password-file=/etc/sery.pass  这段是密码文件,如果不加这段,需要手动输入服务器端定义好的密码。
root@192.168.200.149::data   这里的:data是服务器端的发布项。
 
如果文件比较大,可以使用nohup将进城放在后台执行,
[root@mailsvr ~] #  nohup rsync -aSvH --password-file=/etc/sery.pass root@192.168.200.149::data  /home/ >rsync.log &
 
上面的表示将远程机器192.168.200.149机器上发布的data目录,同步到本地机器的/home/目录下。

Rsync同步常见问题总结:
错误一:
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
解决:这是因为密码设置错了,无法登入成功,检查一下rsync.pwd,看客服是否匹配。还有服务器端没启动rsync 服务也会出现这种情况。
错误二:
password file must not be other-accessible
continuing without password file
Password:
解决:这是因为rsyncd.pwd rsyncd.sec的权限不对,应该设置为600。如:chmod 600 rsyncd.pwd
错误三:
@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)
rsync error: error in rsync protocol data stream (code 12) at io.c(150)
解决:这是因为你在 rsync.conf 中设置的 path 路径不存在,要新建目录才能开启同步。
错误四:
rsync: failed to connect to 218.107.243.2: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
解决:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp 的873端口打开。