使用lsyncd实现两台linux机器实时同步的核心前提是必须走rsync+ssh模式且源端能无密码登录目标端,其他模式不推荐新手;需严格验证ssh免密登录、配置路径、权限、端口、inotify参数及rsync依赖等细节。

直接用 lsyncd 做两台 Linux 机器间的实时同步,核心前提是:**必须走 rsync + ssh 模式,且源端能无密码登录目标端**。其他模式(如 default.rsync 直连 rsync daemon)需要额外配服务端,反而增加出错面,不推荐新手上手。
确认 ssh 免密登录是否真正生效
这是 80% 同步失败的根源。别只看 ssh-copy-id 执行成功就以为完事了。
-
ssh连接用户、端口、~/.ssh/id_rsa权限必须和配置里完全一致——比如配置里写的是user@192.168.1.100,就得用该用户执行ssh user@192.168.1.100测试,不能切root试 - 目标机器的
/etc/ssh/sshd_config必须有PubkeyAuthentication yes,且没被AllowUsers拦住 - 如果用了非标准端口(比如 2222),配置中
ssh = { port = 2222 }和rsync = { _extra = {"--rsh=ssh -p 2222"} }要同时设,缺一不可 - 测试命令必须带
-o StrictHostKeyChecking=no参数(或提前ssh-keyscan),否则首次连接卡住,lsyncd就静默失败
配置文件必须用 .conf 后缀且路径固定
CentOS/RHEL 系统默认只认 /etc/lsyncd.conf;Debian/Ubuntu 默认读 /etc/lsyncd/lsyncd.conf。用错路径,systemctl start lsyncd 不报错但实际没加载配置。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 不要手动生成
.lua文件——虽然lsyncd内部用 Lua 解析,但发行版打包后已适配标准.conf格式,强行用lsyncd.lua可能因版本差异解析失败 - 配置里所有路径必须是绝对路径:
source = "/data/app",不能写source = "data/app" -
logfile和statusFile所在目录(如/var/log/lsyncd/)得提前mkdir -p并chown lsyncd:lsyncd,否则日志写不进去,你也看不到错误
sync 块里 target 写法决定同步方向和协议
target 字段不是随便填 IP 或路径,它直接控制底层调用方式:
-
target = "192.168.1.100:/data/backup"→ 走rsync over ssh,依赖 ssh 免密,最常用 -
target = "user@192.168.1.100::module_name"→ 走 rsync daemon 模式,需目标开rsyncd服务并配好[module_name],复杂度高 -
target = "/local/path"→ 本地同步,不走网络,default.rsync模式下可用,但和“两台机器”需求无关 - 务必注意末尾斜杠:
"/data/"和"/data"对rsync行为影响巨大——前者同步内容,后者同步目录本身
启动前必须检查三个进程级依赖
lsyncd 本身不干活,它只是 inotify 监听器 + rsync 调度器,缺任何一个环节都会假死。
- 确认
inotify可用:cat /proc/sys/fs/inotify/max_user_watches建议 ≥ 524288,太小会导致监控失效且无提示 - 确认
rsync存在且可执行:which rsync输出应为/usr/bin/rsync,若编译安装在别处,必须在配置里显式写binary = "/path/to/rsync" - 确认没有残留进程:
ps aux | grep lsyncd如果看到多个lsyncd进程,先killall lsyncd,再systemctl start lsyncd,否则新旧配置混跑
最容易被忽略的是 delay 和 maxDelays 的协同逻辑:delay=5 表示最多等 5 秒触发一次 rsync,maxDelays=10 表示累计 10 个事件就立即触发——哪怕才过 0.3 秒。这两个值设得太小,小文件高频写入时会打爆目标机 rsync 进程;设得太大,又失去“实时”意义。线上建议从 delay=3、maxDelays=5 开始压测调整。










