Rsync+inotify实现实时同步

首先修改/etc/sysctl.conf

fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
sysctl -p   

下载inotify软件包,解压

 tar xf inotify-tools-3.14.tar.gz 
 cd inotify-tools-3.14/
 ./configure && make && make install

监测/www/html/为例,复制窗口,在其目录下进行操作时,会有输出

inotifywait -mrq -e modify,attrib,create,delete,move /www/html/
复制代码
-m是要持续监视变化。
-r使用递归形式监视目录。
-q减少冗余信息,只打印出需要的信息。
-e指定要监视的事件列表。
access 访问,读取文件。
modify 修改,文件内容被修改。
attrib 属性,文件元数据被修改。
move 移动,对文件进行移动操作。
create 创建,生成新文件
open 打开,对文件进行打开操作。
close 关闭,对文件进行关闭操作。
delete 删除,文件被删除。
选项参数介绍
复制代码

实时监控inotify脚本

复制代码
vim /opt/inotify
INOTIFY_CMD="inotifywait -mrq -e modify,attrib,create,delete,move /www/html/"
RSYNC_CMD="rsync -avzH --delete --password-file=/etc/rsync_passwd /www/html/ rsync://backuper@192.168.200.114:/www
root"
$INOTIFY_CMD |while read A B C 
do
        if [ $(pgrep rsync | wc -l ) -le 1  ]
        then
                $RSYNC_CMD
        fi
done
复制代码
开启脚本后启动inotify实时监测,如果监测到输出信息后,执行if语句:过滤rsync进程,如果当前rsync没处于正在执行状态的话,就执行远程同步命令
备注

 

posted @   开心burukku  阅读(111)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示