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:以上内容已经过二次整理修改,已可实现我们的实验目的,部分细节我后续再进行更新.

原文地址:https://www.cnblogs.com/biaopei/p/10335427.html