从定时到实时:用 inotify+rsync 实现高效同步

2025-12-12 0 1,037

我们就可以用今天要介绍的组合:inotify + rsync 实时文件同步方案

1 inotify 是什么?

inotify 是 Linux 内核提供的一种机制,可以监听文件系统的变化,比如文件的创建、修改、删除、移动等操作。我们可以通过工具如 inotifywait 来利用它。

实现思路:通过 inotify 实时监听源目录,当检测到变化时,立即触发一次 rsync 同步操作,极大地提升了效率和数据一致性。

inotify+rsync组合优势:

  • 实时响应:监控文件变化,立即触发同步
  • 资源占用低:相比定时轮询更省资源

部署简单:无需额外服务进程,脚本即可运行

2 实战部署

上一篇文章已经将rsync部署好了,这次只需要安装inotify和配置就行

在源主机(10.0.0.110)上操作

2.1 安装 inotify-tools

🛠️ 安装方法

根据你的 Linux 发行版选择对应的安装方式:

发行版 安装命令
Debian/Ubuntu sudo apt-get install inotify-tools 1
CentOS/RHEL yum install inotify-tools -y 2
检查是否安装 inotifywait --help 3

2.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
done

 

命令 作用
inotifywait -r -e modify,create,delete,move 递归监听目录及其子目录的修改/创建/删除/移动事件
rsync -azP 增量归档压缩传输,显示进度
–delete 删除目标中源目录已删除的文件,实现镜像同步
>> $LOG 把输出追加到日志文件中便于排查问题

2.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.111

2.4 后台运行脚本(推荐)

nohup bash /opt/realtime_rsync.sh &

2.5 测试验证

在源主机上同步目录创建新文件

cd /var/www/html
touch touch test1.txt

检查日志的同步情况

【温馨提示】这个日志一直会生成,建议做个定时任务定时清理。

3 应用场景推荐

  • Web 服务器部署代码实时同步
  • 图片/视频上传目录备份到云服务器
  • 多机共享一个工作目录(只读同步)
  • 日志文件收集实时传送到分析服务
收藏 打赏

感谢您的支持,我会继续努力的!

打开微信扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

相关文章

猜你喜欢
发表评论
暂无评论