RSYNC单向数据同步手册
前提条件
root用户登录操作
约束
该方案为单向同步,需在主控机上进行设置。设置成功后,所有的应用程序更新都必须在主控机上进行,受控机会自动获得更新。
需要向客户明确告知,在应用程序目录(被同步目录)下,不存在存放网民生成文件的目录,如果有此类目录,需将该目录做共享,而不是同步,否则会造成数据丢失。
一、同步配置
1、Server端的配置rsync
A、创建rsync所需目录和文件
#创建rsync目录
[root@localhost ~]# mkdir /etc/rsyncd
#创建rsync的主配置文件
touch /etc/rsyncd/rsyncd.conf
#创建rsync的密码文件
[root@localhost ~]# touch /etc/rsyncd/rsyncd.secrets
#设置创建的密码文件权限为600
[root@localhost ~]#chmod 600 /etc/rsyncd/rsyncd.secrets
#创建客户连接服务器时显示给客户的消息
[root@localhost ~]# touch /etc/rsyncd/rsyncd.mot
B、rsyncd.conf内容如下:
[root@localhost ~]# vim /etc/rsyncd/rsyncd.conf
uid = root #传输文件时守护进程应该具有的uid
gid = root #传输文件时守护进程应该具有的gid
usechroot = no #不使用chroot功能
max connections = 5 #设置最大并发连接数以保护服务器
pid file = /var/run/rsyncd.pid #运行rsync时进程ID文件
lock file = /var/run/rsync.lock #锁文件的存放位置.指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock
log file = /var/log/rsyncd.log #指定日志文件路径
[backup(用户输入)] #这里是认证的模块名,在client端需要指定
path = /data/backup(server端的目录) #指定备份目录路径
ignore errors #可以忽略一些无关的IO错误
read only = no
list = yes #允许列出客户请求时可以使用的模块列表
auth users = test #设置允许连接的用户
secrets file =/etc/rsyncd/rsyncd.secrets #指定密码文件路径
#backup end#
#rsyncd.secrets内容如下:
[root@localhost ~]# vim /etc/rsyncd/rsyncd.secrets #权限一定是600
test:Test_password #用户名和密码
#rsyncd.motd内容如下:
[root@localhost ~]# vim /etc/rsyncd/rsyncd.motd
Welcome to linuxrsync system!
C、以—daemon方式启动rsync服务
[root@localhost ~]# /usr/local/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
2、rsync client配置
#创建用户密码验证文件,免去输入密码的麻烦
[root@localhostbakup]# vim /etc/rsyncd.pass
Test_password #密码验证文件
#设置密码权限为600
[root@localhostbakup]# chmod 600 /etc/rsyncd.pass
3、防火墙设置
[root@localhost ~]#iptables -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT
[root@localhost ~]#/etc/rc.d/init.d/iptables save
[root@localhost ~]#/etc/init.d/iptables restart
二、同步测试
#在rsync client运行此命令语句进行测试
#/usr/local/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas test@rsync_server_ip::backup /home/backup &(指定client端的目录)
注:
test为用户名,rsync_server_ip:服务器端ip,backup为模块名,/home/backup为本地目录
若测试不成功请参加下文常见问题。
三、加入任务计划
同步测试通过后进行crontab配置
#crontab -e
*/5 * * * * /usr/local/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsyncd.pas test@rsync_server_ip::backup /data/backup &
注:同步频率需根据实际情况配置。
四、同步多个文件夹配置
如果需要多个不同目录支持同步,再增加一个认证模块(格式如rsyncd.conf中的[backup]模块),然后在客户端输入同步命令
/usr/local/bin/rsync -vzrtopg --delete --progress --password-file=/etc/backserver.pas test@rsync_server_ip::backup /data/backup &
五、方案限制
此方案只适用于单向数据同步,同步数据应为网站文件及其他普通文件夹,不可同步数据库。
六、常见问题
问题1:
在client上遇到问题:
rsync -auzv --progress --password-file=/etc/rsync.pas root@***.***.***.***::backup /home/
rsync: could not open password file "/etc/rsync.pas": No such file or directory (2)
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
遇到这个问题:client端没有设置/etc/rsync.pas这个文件,而在使用rsync命令的时候,加了这个参数--password-file=/etc/rsync.pas
问题2:
rsync -auzv --progress --password-file=/etc/rsync.pas root@***.***.***.***::backup /home/
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
遇到这个问题:client端已经设置/etc/rsync.pas这个文件,里面也设置了密码,和服务器一致,但是
服务器段设置有错误,服务器端应该设置/etc/rsync.pas ,里面内容root:密码 ,这里登陆名不可缺少
问题3:
rsync -auzv --progress --password-file=/etc/rsync.pas root@***.***.***.***::backup /home/
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
遇到这个问题,是因为服务器端的/home/backup。其中backup这个目录并没有设置,所以提示:chdir failed
问题4:
rsync: write failed on "/home/backup2010/wensong": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(302) [receiver=3.0.7]
rsync: connection unexpectedly closed (2721 bytes received so far) [generator]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [generator=3.0.7]
磁盘空间不够,所以无法操作。
可以通过df /home/backup2010 来查看可用空间和已用空间
问题5:
rsync: failed to connect to ***.***.***.***: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]
检查服务器的端口netstat –tunlp,远程telnet测试。
问题6:
rsync: failed to connect to ***.***.***.***: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.5]
启动服务:rsync --daemon --config=/etc/rsyncd.conf
问题7:
rsync: failed to connect to ***.***.***.***: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=2.6.9]
解决:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp 的873端口打开。
问题8:
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=2.6.8]
原因及解决办法:
SELinux;
setsebool -P rsync_disable_trans on
问题9:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1296) [sender=2.6.8]
原因:
rsynd里面配置passwd是
username:password 这样的格式
客户端使用的时候,不能用这种格式,文件里面只能有password