Rsync(remote sync)是UNIX及类UNIX平台下一款神奇的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率。你可以使用它进行本地数据或远程数据的复制,Rsync可以使用SSH安全隧道进行加密数据传输。Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。Rsync使用TCP 873端口。

rsync的安装很简单,我们一般用的centos系统直接yum就可以安装:

yum install -y rsync

这里我们以2台服务器来演示,A服务器:192.168.0.1,B服务器:192.168.0.2,B服务器需要同步A服务器的/web目录,我们首先操作B服务器:

vim /etc/rsync.conf
#日志位置
log file = /var/log/rsyncd.log
#pid文件位置
pidfile = /var/run/rsyncd.pid
#lock文件位置
lock file = /var/run/rsync.lock
#同步的账号密码文件
secrets file = /etc/rsync.pass
#同步提示显示设置文件
motd file = /etc/rsyncd.Motd
#同步的自定义模块名称
[web]
#同步的目录
path = /

comment = web
#同步用的uid
uid = root
#同步用的gid
gid = root
#rsync监视端口
port=873

use chroot = no

read only = no

list = no

max connections = 2

timeout = 600
#验证用户
auth users = web
#允许同步的远端服务器ip
hosts allow = 192.168.0.1
#禁止同步的远端服务器ip
hosts deny = *
#设置同步的账号密码
echo "tom:pass" > /etc/rsync.pass
chmod 600 /etc/rsync.pass

启动rsync服务:

rsync --daemon

这里大家要记得看看服务器的防火墙有没有阻止873端口,阻止的话记得打开不是同步会报错。


到这里B服务器的部署已经完成,转到A服务器上一样的先需要安装rsync

yum install -y rsync

建立同步验证的密码文件

echo "pass" > /etc/passwd.txt

测试同步效果,注意一定要小心不要同步错了方向,最好拿一个没用的目录来测试,这里我们直接测试:

rsync -avH --port=873 --progress --delete /web [email protected]::web --password-file=/etc/passwd.txt

查看2边目录文件是否一致,没有问题就保存为shell文件rsync.sh,并做一个crontab每分钟同步一次:

*/1 * * * * /bin/sh /root/rsync.sh >>/var/log/rsync.log 2>&1

到这里就大功告成了!!