Centos 7 rsync+inotify 实现数据实时同步
2018-01-10 09:54 环境介绍: 
两台服务器分别为: 源服务器:192.168.0.1 目标服务器:192.168.0.2,从源服务器(192.168.0.1)的/wwwroot/目录下的所有的文件实时同步到目标服务器(192.168.0.2)的/www_bak/目录下,源服务器下需要安装rsync和inotify,源服务器做为主动端,实时的向目标服务器client端发送数据。
安装步骤:
一、首先安装目标服务器rsync,Centos7默认已经安装,如未安装请自行安装即可,可以做个检测:
rpm -qa|grep rsync

1.后台服务的方式启动
vi /etc/xinetd.d/rsync
#default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync {
disable = no
flags =IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
2.把rsycd加入到开机启动,注意--daemon参数,否则客户端会报告错误。
vi rc.local
rsync --daemon --config=/etc/rsyncd.conf
3.创建配置文件,默认安装好rsync程序后,并不会自动创建rsync的主配置文件,需要手工来创建,其主配置文件为“/etc/rsyncd.conf”,创建该文件并插入如下内容:
vi /etc/rsyncd.conf
#rsync通用配置文件,配置的注释不要写在配置后面,否则会有问题
uid = www
gid = www
use chroot = 0
port = 873
#允许ip访问设置,请根据实际需要进行配置,这里为了方便设为全网段 *,生产环境下为了安全请指定ip或ip段
hosts allow = 192.168.0.1
max connections = 1000
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
syslog facility = local3
#方括号中为模块声明,对应命名,这里master_web对应了主web机配置,从服务器可都为[slave_web],方便inotify脚本配置
[slave_web]
#指定当前模块在rsync服务器上的同步路径,该参数是必须指定的
path = /www_bak/
#注释,可以同模块名一样,从服务器可都为slave_web
comment = slave_web
ignore errors
#是否允许客户端上传文件
read only = no
list = no
#指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
auth users = rsync
#保存密码和用户名文件,需要自己生成
secrets file = /etc/rsyncd.passwd
secrets file = /etc/rsyncd.passwd
4.创建密码文件
vi /etc/rsyncd.passwd 内容为:
rsync:123456
并给予600权限,此步骤必须做,否则客户端无法链接。
chmod 600 /etc/rsyncd.passwd
5.开放防火墙873端口
#vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -ptcp --dport 873 -j ACCEPT
重新启动防火墙,查看是否成功
iptables -L -n
评论