CentOS7之Rsync+Inotify架构实现实时同步文件和文件夹
该实验是为了实现服务器S上的文件夹内容变动后,自动同步到服务器C上,使两个服务器S和C文件内容保持一致.原理是当inotify监听到文件内容变动后,自动调用rsync进行文件和文件夹的同步.
系统:Centos7.3
服务器S:192.168.2.128 #需要同步内容的服务器,我们简称为S
客户端C:192.168.2.137 #等待同步内容的服务器,我们简称C
我们的最终目的是实现,将S上的内容实时同步到C上
1.下载inotify-tools并上传到服务器S
下载地址
https://github.com/rvoicilas/inotify-tools/wiki
二:关闭防火墙和selinux
在S和C上分别执行:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/enforcing/disabled/" /etc/selinux/config
三:配置S
在服务器S上执行以下操作
yum install rsync gcc -y
#设置目录
vi /etc/rsyncd.conf #文件内容如下
[node1] #模块名,可自定义,用来标志和识别rsync同步目录,建议和path的值目录名一致,方便记忆 path = /node1 #我们需要同步的目录,这里我假设为node1 auth user = rsync_backup #指定用户同步,建议在系统里也添加这个用户,并指定该用户位node1的拥有者 secrets file = /etc/rsyncd.secrets #指定保存用户密码文件
mkdir /node1
useradd rsync_backup #添加rsync用户用于同步
chown -R rsync_backup:rsync_backup /node1 #修改文件夹拥有者
rsync --daemon #启动服务
netstat -anpt|grep 873 #查看rsync是否正常启动
echo "rsync_backup:123456" >/etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
touch /node1/file{1..3}
tar -zxvf inotify-tools*
rm -rf *.gz
cd inotify-tools*
./configure && make && make install
vi /tmp/1.sh
#!/bin/bash /usr/local/bin/inotifywait -mrq -e modify,create,move,delete,attrib /node1 |while read events
#-m –monitor始终保持事件监听状态 -r –recursive递归查询目录,-q –quiet打印监控事件的信息,-e –event指定删、增、改等事件 do rsync -a --delete /node1 这里输入服务器C的IP::node2
#-a归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 --delete 删除那些接收端还有而发送端已经不存在的文件
echo "`date +'%F %T'` 出现事件 $events" >>/tmp/rsync.log 2>&1 done
四:配置C
配置服务器C
yum install rsync -y
vi /etc/rsyncd.conf #修改文件内容
[node2] path=/node2/ read only=false uid=rsync_backup gid=rsync_backup
useradd rsync_backup #添加rsync用户用于同步
mkdir /node2
chown -R rsync_backup:rsync_backup /node2 #修改文件夹拥有者
rsync --daemon
netstat -tlnp|grep 873
五:测试同步功能
在服务器S上执行以下操作
nohup sh /tmp/1.sh & #执行该1.sh脚本,启动监听,当S上有内容变动时,会自动同步到C上
尝试在服务器S上创建一个文件
echo "aaa">>/node1/file1
那么在服务器C上也会自动在对应位置上生产该新文件
左上->S,右上->C,右下->S nohup.out可以查看相关的执行日志,也可以看/tmp/rsync.log.可以看到,我在右下角终端创建一个a文件夹,左上终端就会有相关的日志更新,同时,右上角终端可以看到C上同时生成了a文件夹
以上,就是这次实验全过程,成功达到目的.
但是还有一个缺点,就是左上角终端日志中提示的警告,提示chgrp操作有异常,不过没有影响同步.我尝试这chown修改目录拥有者,但是这个只对已存在文件有效,对后面新建的文件夹依然无效,找到原因后我再和大家分享一下.
PS:以上内容已经过二次整理修改,已可实现我们的实验目的,部分细节我后续再进行更新.