在上一篇文章:一文搞懂 rsync:原理剖析 + Rocky Linux 主机同步部署实战
我们实现了通过 rsync + cron 的从定方式定时同步文件,适用于对实时性要求不高的时到实时c实场景。比如网站内容部署、现文效同日志备份、从定图片上传等。时到实时c实然而在很多实际应用中,现文效同我们希望文件一旦发生变更,从定马上同步到目标位置。时到实时c实
这时,现文效同我们就可以用今天要介绍的从定组合:inotify + rsync 实时文件同步方案。

inotify 是 Linux 内核提供的一种机制,可以监听文件系统的WordPress模板现文效同变化,比如文件的从定创建、修改、时到实时c实删除、现文效同移动等操作。我们可以通过工具如 inotifywait 来利用它。
实现思路:通过 inotify 实时监听源目录,当检测到变化时,立即触发一次 rsync 同步操作,极大地提升了效率和数据一致性。
inotify+rsync组合优势:
实时响应:监控文件变化,立即触发同步资源占用低:相比定时轮询更省资源部署简单:无需额外服务进程,脚本即可运行2. 实战部署
上一篇文章已经将rsync部署好了,这次只需要安装inotify就行.
在源主机(10.0.0.110)上操作:
(1) 安装 inotify-tools
Rocky Linux 默认的软件仓库中 没有inotify-tools,所以我们需要启用 EPEL源才能安装。b2b供应网
复制# 安装epel源 dnf install -y epel-release # 安装inotify-tools dnf install inotify-tools -y # 检查 inotifywait --help1.2.3.4.5.6.7.8.(2) 编写实时同步脚本
我们编写一个脚本 /opt/realtime_rsync.sh,实现文件变更即同步。
复制#!/bin/bash # 实时同步脚本:部署在 10.0.0.110 上(源服务器) SRC="/var/www/html" # 本地源目录,末尾必须加斜杠 DEST="10.0.0.111:/backup/web" # 远程目标地址 LOG="/var/log/realtime_rsync.log" # 日志文件位置 while inotifywait -r -e modify,create,delete,move "$SRC" do rsync -azP --delete $EXCLUDE"$SRC""$DEST" >> "$LOG" 2>&1 echo"[$(date)] 同步完成" >> "$LOG" # 可选:避免频繁触发同步,稍作延迟 sleep 2 done1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.参数说明:
命令
作用
inotifywait -r -e modify,create,delete,move
递归监听目录及其子目录的修改/创建/删除/移动事件
rsync -azP
增量归档压缩传输,显示进度
--delete
删除目标中源目录已删除的文件,实现镜像同步
>> $LOG
把输出追加到日志文件中便于排查问题
(3) 配置SSH 免密登录
为了实现自动同步,建议你在 10.0.0.110 上配置对 10.0.0.111 的 SSH 免密登录
复制ssh-keygen -t rsa # 一路回车 ssh-copy-id root@10.0.0.111 # 输入密码 # 测试 ssh root@10.0.0.1111.2.3.4.5.6.(4) 后台运行脚本(推荐)
复制nohup bash /opt/realtime_rsync.sh &1.(5) 测试验证
在源主机上同步目录创建新文件
复制cd /var/www/html touch touch test1.txt1.2.从图片可以看到新建的文件已经自动完成了同步:

检查日志的同步情况:

【温馨提示】这个日志一直会生成,建议做个定时任务定时清理,不然会导致磁盘空间。
3. 应用场景推荐Web 服务器部署代码实时同步图片/视频上传目录备份到云服务器多机共享一个工作目录(只读同步)日志文件收集实时传送到分析服务本次分享结束啦,后期会更新更多技术干货文章!云服务器提供商
(责任编辑:应用开发)