rsync + inotify 实时同步

缺点:

1并发不能大于200个文件(10-100k)
2每次都是重新全部推送,

 

在客户端安装,首先查看是否支持

[root@rsync-c ~]# ll /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 7月   8 16:40 max_queued_events
表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃,但会触发IN_Q_OVERFLOW事件。

-rw-r--r-- 1 root root 0 7月   8 16:40 max_user_instances
表示每一个real user ID可创建的inotify instatnces的数量上限。

-rw-r--r-- 1 root root 0 7月   8 16:40 max_user_watches

表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小。

解压安装

下载地址 :inotify-tools-3.14.tar.gz

wget https://www.jinchuang.org/novel/lnmp/inotify-tools-3.14.tar.gz
tar -zxvf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify
make && make install

#做软连接
ln -s /usr/local/inotify/bin/* /usr/bin/

 

测试监控操作:

我们从新打开打开一个shell窗口操作,当前shell窗口做监控查看是否监控到了变化。

#只监控创建操作
[root@rsync-c ~]# inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e create /backup

#同时监控创建 删除,写入操作 
[root@rsync-c ~]# inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e create,delete,close_write /backup

图为我测试的实时监测结果:

rsync + inotify 实时同步

监控脚本,客户端写入删除操作同步写入到服务端同步目录中。

#!/bin/bash

host1="192.168.23.252"  #服务端地址
src="/backup"  #源目录
dst="www"     #目的目录
user="backup"  #rsync用户
passfile="/etc/rsyncd.passwd"   #密码文件路径

#实时监测|并且执行rsync同步操作
inotifywait -mrq --timefmt '%d%m%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \
|while read file
do
#如果只同步新的文件而不同步删除掉的文件,去掉--delete参数即可,
cd $src && rsync -auvrtzopgP -R --delete ./ --timeout=100 $user@$host1::$dst --password-file=${passfile} 2>&1 >/dev/null
done
分享