先明确你的“消息同步”具体场景,再按下方对应方案实施即可。
常见场景与对应方案
| 场景 |
推荐方案 |
关键工具 |
适用特点 |
| 跨主机文件实时双向同步 |
触发式双向同步 |
Unison + inotify-tools + OpenSSH |
多机可扩展为星型拓扑,变更即同步,保留两端历史 |
| 跨主机文件准实时单向同步 |
事件触发 + 增量传输 |
inotifywait + rsync + SSH密钥 |
轻量、脚本化,易守护运行 |
| 多机文件准实时统一分发 |
守护进程 + 定时回放 |
incron + rsync |
系统级事件触发,适合固定目录分发 |
| 局域网即时通讯与文件传输 |
同网段 IM |
飞鸽传书(Windows)+ iptux(Ubuntu) |
零配置、即装即用,适合同网办公 |
| 应用层数据同步(如笔记/邮件) |
修复依赖或改用服务 |
例:libssl1.0 兼容、rsync 模块 + 密码文件 |
解决客户端库冲突或搭建服务端同步通道 |
方案要点与快速上手
-
跨主机文件实时双向同步(Unison)
- 安装:sudo apt-get install unison inotify-tools openssh-server
- 免密:ssh-keygen 生成密钥;ssh-copy-id user@host 分发公钥
- 首次全量:unison /data ssh://user@host//data -batch -auto -confirmbigdel=false
- 触发式双向:用 inotifywait 监听变更,调用 unison 同步(建议做成 systemd 服务)
- 多机扩展:以一台为“星心”,其余与其双向同步,再逐层扩散变更。
-
跨主机文件准实时单向同步(rsync + inotify)
- 安装:sudo apt-get install rsync inotify-tools
- 首次全量:rsync -az --delete /src/ user@host:/dst/
- 事件触发脚本要点:
- inotifywait -mrq -e create,delete,modify,move --format ‘%w%f’ /src | while read f; do rsync -az --delete /src/ user@host:/dst/; done
- 守护运行:nohup ./sync.sh > sync.log 2>&1 &
- 适用:日志、上传目录等单向分发场景。
-
多机文件准实时统一分发(incron + rsync)
- 安装与权限:sudo apt-get install incron;echo root | sudo tee -a /etc/incron.allow
- 事件表:incrontab -e
- /data/ IN_CREATE,IN_MODIFY /usr/local/bin/sync.sh
- 脚本 sync.sh:rsync -az /data/ user@host:/data/
- 提示:incron 默认不递归子目录,需按目录层级分别配置。
-
局域网即时通讯与文件传输(飞鸽传书 + iptux)
- Windows 安装飞鸽传书;Ubuntu 安装iptux(sudo apt-get install iptux)
- 两端处于同一网段;在 iptux 中添加对方 IP 即可文字聊天与传文件。
-
应用层数据同步(笔记/邮件等)
- 若为客户端库冲突(如 Ubuntu 18.04 上某笔记出现 network error=99):可尝试安装兼容库(如 libssl1.0 系列),或改用系统自带/服务端方案。
- 若为服务器间数据同步:可用 rsync 模块 + 密码文件 的方式做定时或守护同步(适合邮件目录、用户数据等)。
网络连通性排查要点
- 执行:ping、nc -vz 目标IP 端口、traceroute/tracert,确认链路可达
- 检查 UFW/iptables 与云上安全组是否放行对应端口(如 22/873)
- 若 apt 更新超时,优先更换为国内镜像源并排除防火墙/安全组限制。
稳定性与一致性建议
- 统一使用 SSH 密钥登录,避免脚本交互中断
- 为关键目录设置 inotify 监控上限:echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
- 重要数据先 全量备份,再启用触发式同步
- 双向同步建议用 Unison;单向分发优先 rsync
- 将同步脚本纳入 systemd 或 supervisord 管理,自动拉起与日志轮转