RSYNC单向数据同步手册

时间:2022-09-19 08:36:10

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