CentOS7-rsync同步服务器目录

  • 内容
  • 评论
  • 相关

因为服务器架构上的原因,有些时候我们需要讲a服务器的某些目录同步到b服务器对应的目录上。举个例子,假如你的网站以内容输出为主,比如游戏攻略等。那么作为优化手段,在服务器架构上至少就需要两台服务器。一台用来存放项目的相关代码(服务器a),一台(服务器b)展示从服务器a同步过来的项目生成的静态内容。那么这个时候就需要将服务器a生成的静态文件同步至服务器b了,这里我使用了linux的rsync。

CentOS7
场景:
服务器a(同步服务器)
服务器b(被同步服务器)

安装rsync:
yum -y install rsync

启动rsync服务:
systemctl start rsyncd.service 
systemctl enable rsyncd.service

检查是否已经成功启动 
netstat -lnp|grep 873
或者
pa aux|grep rsync

修改配置文件(主动同步和被动同步的服务器都需要)
vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:

#设置运行rsync用户
uid = root
gid = root
use chroot = yes
max connections = 4
#Centos7中yum安装不需要指定pid file否则报错
pid file = /var/run/rsyncd.pid
#系统自动创建日志
log file = /var/log/rsync.log
exclude = lost+found/
transfer logging = yes
timeout = 900
#同步时跳过没有权限的目录
ignore nonreadable = yes
#传输时不压缩的文件
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

#同步的服务器端的配置,被同步的服务器无需配置,配置亦可
#规则名称
[rsync]
#同步的路径
path=/www/web/test
#规则描述
comment=同步规则
ignore errors
#是否可以pull
read only=no
#是否可以push
write only=no
list=no
#客户端获取文件的身份此用户并不是本机中确实存在的用户
auth users=rsyncken
#用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权限一定需要改为600,且属主必须与运行rsync的用户一致。
secrets file=/etc/rsyncd.passwd
#允许所有主机访问
hosts allow=*

# [ftp]
#        path = /home/ftp
#        comment = ftp export area

修改密码文件(密码自定义,此处123456为例):

a服务器(同步服务器):
echo 'rsyncken:123456' > /etc/rsyncd.passwd

b服务器(被同步服务器):
echo '123456' > /etc/rsyncd.passwd

两边的rsyncd.passwd文件的权限都需要设置为600
chmod 600 /etc/rsyncd.passwd

配置完这些之后,两边服务器都重启rsync:
systemctl restart rsyncd.service
现在试一下同步,在a服务器/www/web/test中增加1.json。
在b服务器中同步a服务器的内容:
rsync -auv --password-file=/etc/rsyncd.passwd rsyncken@120.xx.xx.xx(a服务器的ip)::rsync /www/web/test

上图说明同步成功。

最后,crontab -e将此命令加入定时任务中,则可定时同步服务器目录。