rsync结合inotify工具实现实时同步传输文件

前言

环境:centos7.9 inotify-tools-3.1

我们在上一篇《Linux远程传输命令scp、rsync(tar打包归档并在系统之间传输文件)》中详细介绍了rsync命令的使用方法,rsync命令主要是用来同步两个系统之间的文件,rsync命令是增量同步,但rsync命令无法做到实时同步,想要自动同步我们首先想到的是结合crontab定时任务来实现,但定时任务最小粒度级也是每分钟同步,这样我们有什么办法能做到实时同步呢,办法就是rsync结合inotify工具来实现实时同步传输文件。

安装 inotify-tools工具

[root@master ~]# wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz
[root@master ~]# cd inotify-tools-3.13
[root@master  inotify-tools-3.13]#./configure && make && make install				#安装inotify
[root@master /]# ll /usr/local/bin/inotify*										#安装完成会产生两个命令
-rwxr-xr-x 1 root root 52552 Oct 16 01:29 /usr/local/bin/inotifywait				#inotifywait等待						
-rwxr-xr-x 1 root root 54640 Oct 16 01:29 /usr/local/bin/inotifywatch				#inotifywatch看守
[root@master /]# 

inotifywait命令的使用

编写脚本

inotifywait只是一个监控文件的命令,那么如何做到实时监控呢,我们需要编写while循环脚本,内容就写inotifywait结合rsync传输文件,这就不就能做到实时监控文件的变化并传输到远程服务器上了吗,脚本内容如下:

[root@master ~]# vim  inotifywait_rsync.sh								#创建脚本文件并写入一下内容
[root@master ~]# cat inotifywait_rsync.sh								#脚本内容
#!/bin/bash
/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@master ~]# chmod u+x inotifywait_rsync.sh
[root@master ~]# nohup /bin/sh /root/inotifywait_rsync.sh &			#nohup 与&符号结合使脚本在后台不被窗口关闭中断运行
[root@master ~]# echo "tetstst" >>test1/file2							#在监控目录test1中创建一个file2文件
[root@master ~]# ll test2/												#查看test2/	目录里面已经同步过来了一个file2文件
total 12
-rw-r--r-- 1 root root 6 Oct 16 02:57 file2

 [root@master ~]# tail -22f inotifywait.log							#查看日志
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系统执行远程同步文件。

其他解决方案

除了使用rsync结合inotify工具实现实时同步传输文件,rsync+sersync也可以实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值