linux多服务器同步需确保可靠、可重复、低干扰,核心是rsync+ssh增量同步、ansible批量调度、inotify自动响应及chrony时间统一。

Linux 多服务器同步任务,核心是可靠、可重复、低干扰。重点不在“一次传完”,而在“传得准、改得清、出错能回退”。
用 rsync + SSH 实现增量同步
rsync 是最常用也最稳妥的选择,配合 SSH 加密传输,支持断点续传和差异同步,避免重复拷贝大量数据。
- 基础命令示例:rsync -avz --delete -e "ssh -p 2222" /data/ user@192.168.1.10:/backup/data/(-a 保留属性,-v 显示过程,-z 压缩传输,--delete 清理目标端多余文件)
- 建议将 SSH 密钥免密登录配好,避免脚本中硬编码密码;也可用 ssh-agent 管理多密钥
- 对大目录,加 --exclude='*.tmp' 或 --filter="merge /etc/rsync-filter" 精确控制同步范围
用 Ansible 批量触发同步任务
当要同时向 5 台、50 台服务器推送配置或代码时,手动写 rsync 循环容易出错,Ansible 能统一调度、并行执行、失败暂停。
SmartB2B 是一款基于PHP、MySQL、Smarty的B2B行业电子商务网站管理系统,系统提供了供求模型、企业模型、产品模型、人才招聘模型、资讯模型等模块,适用于想在行业里取得领先地位的企业快速假设B2B网站,可以运行于Linux与Windows等多重服务器环境,安装方便,使用灵活。 系统使用当前流行的PHP语言开发,以MySQL为数据库,采用B/S架构,MVC模式开发。融入了模型化、模板
- 写一个 playbook(如 sync-app.yml),用 synchronize 模块调用 rsync,或直接用 copy/template 分发小文件
- 主机清单(inventory)里分组管理,比如 [web] 和 [db],按需同步不同内容
- 加上 --limit web01,web02 可临时指定目标,适合灰度发布场景
用 inotify + rsync 自动响应文件变更
适用于开发环境或中间件配置热更新:源服务器一有改动,立刻推送到下游节点,无需定时轮询。
- 用 inotifywait 监听目录(需安装 inotify-tools),检测到 MODIFY 或 MOVED_TO 事件后触发 rsync
- 注意避免“修改→同步→再次触发”的循环(例如 rsync 写入目标时又触发监听),可在 inotifywait 中加 --exclude '^\.rsync$' 或用标志文件控制
- 建议搭配 systemd service 管理守护进程,并记录日志到 /var/log/inotify-sync.log
用 Chrony/NTP 保障时间一致(关键前提)
很多同步逻辑依赖时间戳(如 rsync 的 -a、日志轮转、证书有效期)。若各服务器时间差几秒,可能漏同步、误删除,甚至导致分布式锁失效。
- 所有服务器统一使用 chrony 指向同一组 NTP 服务器(如 pool.ntp.org 或内网 NTP 服务)
- 运行 chronyc tracking 查看偏移,chronyc sources -v 确认上游可用
- 禁止混用 ntpdate(已废弃)或系统默认的 timedatectl 自动同步,易与 chrony 冲突









