rsync + inotify
rsync:同步文件
inotify:监控文件变化
环境描述:
192.168.72.101 部署rsync服务,接收文件
192.168.72.102 提供文件(inotify)
同步目录:/test
1、关闭防火墙、SELinux
2、确保每台安装rsync
[root@test01 ~]# rpm -q rsync
rsync-3.1.2-6.el7_6.1.x86_64
3、在192.168.72.101部署rsync服务
1) 编辑配置文件
[root@test01 ~]# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 10
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
port = 873
address = 192.168.72.101
[testdir]
path = /test
comment = test dir
read only = no
auth users = tom
secrets file = /etc/rsyncd.pass
[root@test01 ~]# mkdir /test
2) 创建保存认证用户、密码文件
[root@test01 ~]# cat /etc/rsyncd.pass
tom:123
[root@test01 ~]# chmod 600 /etc/rsyncd.pass
3) 启动rsync服务
[root@test01 ~]# rsync --daemon
[root@test01 ~]# netstat -antp | grep rsync
tcp 0 0 192.168.72.101:873 0.0.0.0:* LISTEN 1108/rsync
4、配置 192.168.72.102
-
测试连接192.168.72.101的rsync服务
a. 创建密码文件[root@test02 ~]# cat /etc/rsyncd.pass 123 [root@test02 ~]# chmod 600 /etc/rsyncd.pass
b. 测试文件同步
[root@test02 ~]# rsync -av --password-file=/etc/rsyncd.pass /tmp/b.txt tom@192.168.72.101::testdir sending incremental file list b.txt sent 95 bytes received 35 bytes 260.00 bytes/sec total size is 4 speedup is 0.03 [root@test02 ~]#
-
创建目录
[root@test02 ~]# mkdir /test
-
安装inotify监控/test目录变化
a. 安装inotify软件[root@test02 ~]# yum install -y inotify-tools
b. 测试inotifywait命令使用
[root@db_server ~]# inotifywait -mrq -e create,move,modify,delete /test/
再打开一个终端,在72.102的test目录创建文件,观察变化。
-
编写脚本,实现同步
[root@test02 ~]# cat inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /test"
RSYNC_CMD="rsync -a --delete --password-file=/etc/rsyncd.pass /test/ tom@192.168.72.101::testdir/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
echo "$(date +%F_%T) $DIRECTORY $FILE $EVENT" >> /tmp/rsync.log
done
5、测试同步
在192.168.72.102上运行脚本,并在另一个终端中创建文件,测试同步