rsync 本身不支持实时监控,必须搭配 inotify 类工具如 sersync 才能实现目录变更自动同步;sersync 封装 inotify,提供配置管理、失败重试和日志记录,是生产环境首选方案。

rsync 本身不支持实时监控,它只是一个高效的增量同步工具。要实现“目录变化 → 自动同步”,必须搭配能监听文件系统事件的工具,最常用、最稳定的企业级组合是 rsync + sersync。
rsync 不能单独实现实时同步
rsync 的设计目标是按需执行一次性的、可靠的差异同步,比如定时任务(cron)每小时拉一次。它没有内置 inotify 或 fanotify 机制,无法感知文件创建、修改、删除等事件。直接用 while 循环加 inotifywait 虽然可行,但健壮性差、易丢事件、难管理进程,不适合生产环境。
sersync 是专为 rsync 实时化设计的守护进程
sersync 封装了 Linux 内核的 inotify 接口,能精准捕获目录下所有层级的变更,并将变更路径批量触发 rsync 同步。它自带配置管理、失败重试、多实例支持和日志记录,是运维落地的首选方案。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- 部署前需确保两台机器已配置好 ssh 免密登录(如 backup 用户可无密码登录 backup-server)
- 源服务器安装 sersync(通常编译安装或使用预编译包),目标服务器只需有 rsync 服务(默认已装)
- 核心配置文件 /usr/local/sersync/confxml.xml 中需明确指定:
- 本地监控目录(如 /data/webapp)
- 远程目标地址(如 backup@10.1.8.11::webapp,或用 ssh 模式 backup@10.1.8.11:/backup/webapp)
- 过滤规则(如忽略 .tmp、.log、.swp 等临时文件)
-
rsync 参数(推荐加
--delete保持严格一致,加-avz保留权限与压缩传输)
启动与验证流程
启动后 sersync 会以 daemon 模式运行,自动加载配置并开始监听:
- 执行
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml - 用
ps aux | grep sersync确认进程存在 - 在监控目录中新建一个测试文件:
touch /data/webapp/test_sync.txt - 几秒内检查目标服务器对应路径是否出现该文件,同时查看
/var/log/sersync.log确认同步日志
常见问题处理
同步失败多数源于权限或路径配置错误:
-
“Permission denied”:检查 ssh 免密是否生效(
ssh backup@10.1.8.11 date应直接返回时间) -
“No such file or directory”:确认目标路径存在且 rsync 模块名(如 webapp)已在目标端
/etc/rsyncd.conf中正确定义 -
大量小文件延迟:在 confxml 中调大
<inotify><delay>60</delay></inotify>合并事件,避免频繁触发 -
删除操作未同步:确保配置中启用了
<delete start="true"></delete>并 rsync 命令含--delete










