前言
环境:centos7.9 inotify-tools-3.1
我们在上一篇《Linux远程传输命令scp、rsync(tar打包归档并在系统之间传输文件)》中详细介绍了rsync命令的使用方法,rsync命令主要是用来同步两个系统之间的文件,rsync命令是增量同步,但rsync命令无法做到实时同步,想要自动同步我们首先想到的是结合crontab定时任务来实现,但定时任务最小粒度级也是每分钟同步,这样我们有什么办法能做到实时同步呢,办法就是rsync结合inotify工具来实现实时同步传输文件。
安装 inotify-tools工具
[root@iflytek ~]
[root@iflytek ~]
[root@iflytek inotify-tools-3.13]
[root@iflytek /]
-rwxr-xr-x 1 root root 52552 Oct 16 01:29 /usr/local/bin/inotifywait
-rwxr-xr-x 1 root root 54640 Oct 16 01:29 /usr/local/bin/inotifywatch
[root@iflytek /]
inotifywait命令的使用
编写脚本
inotifywait只是一个监控文件的命令,那么如何做到实时监控呢,我们需要编写while循环脚本,内容就写inotifywait结合rsync传输文件,这就不就能做到实时监控文件的变化并传输到远程服务器上了吗,脚本内容如下:
[root@iflytek ~]
[root@iflytek ~]
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /root/test1/ | while read events
do
/usr/bin/rsync -avz --delete /root/test1/ /root/test2/
echo "`date +%F\ %T`出现事件$events">>/root/inotifywait.log 2>&1
done
[root@iflytek ~]
[root@iflytek ~]
[root@iflytek ~]
[root@iflytek ~]
total 12
-rw-r--r-- 1 root root 6 Oct 16 02:57 file2
[root@iflytek ~]
2021-10-16 02:57:49出现事件/root/test1/ CREATE file2
2021-10-16 02:57:49出现事件/root/test1/ MODIFY file2
因条件有限,所以以上inotifywait_rsync.sh脚本内容只是测试了本地系统/root/test1/和 /root/test2/目录下的文件同步,可根据实际使用在两个Linux系统执行远程同步文件。
|