rsync + lsyncd 的高效文件实时同步系统
rsync + lsyncd 的高效文件实时同步系统
我们来直接上干货,帮你搭建一个 rsync + lsyncd 的高效文件实时同步系统。
这个方案在 低延迟、低资源占用、跨机房实时同步 场景里非常稳,尤其适合你这种追求高效落地的技术风格。
系统架构思路
核心原理
- lsyncd(Live Syncing Daemon)实时监听本地目录变化(inotify 机制)
- 变化事件触发 rsync 增量同步到目标服务器
- 支持批量事件合并,减少频繁调用 rsync 带来的开销
- rsync 负责数据传输与差异比对,支持压缩、断点续传、权限保持
架构图
[源服务器] --(inotify监听)--> [lsyncd] --(触发rsync)--> [目标服务器]
安装与配置
1. 安装依赖
# 源服务器 & 目标服务器都需要 rsync
sudo apt install rsync -y# 源服务器安装 lsyncd
sudo apt install lsyncd -y
2. SSH 免密登录(避免每次输入密码)
ssh-keygen -t rsa
ssh-copy-id user@target_host
3. lsyncd 配置文件(/etc/lsyncd/lsyncd.conf.lua
)
settings {logfile = "/var/log/lsyncd/lsyncd.log",statusFile = "/var/log/lsyncd/lsyncd.status",statusInterval = 20
}sync {default.rsync,source = "/data/www", -- 需要同步的目录target = "user@target_host:/data/www",rsync = {archive = true, -- 保留权限、时间戳等compress = true, -- 压缩传输verbose = true,_extra = {"--bwlimit=5000"} -- 限速,单位KB/s,可选},delay = 5 -- 延迟合并事件,减少频繁调用
}
4. 启动与开机自启
sudo systemctl enable lsyncd
sudo systemctl start lsyncd
性能优化建议
优化点 | 说明 |
---|---|
inotify 限制 | 调整 /proc/sys/fs/inotify/max_user_watches ,避免监听目录过多时报错 |
rsync 参数 | --inplace 避免临时文件,--partial 支持断点续传 |
网络优化 | 内网可关闭压缩(compress=false ),减少 CPU 占用 |
批量延迟 | delay 参数可根据业务调整,减少频繁触发 |
安全 | 建议配合 --rsync-path="rsync --fake-super" 或 chroot 限制权限 |
适用场景
- Web 服务器集群:代码、静态资源实时分发
- 日志收集:边写边同步到分析节点
- 跨机房热备:低延迟异地容灾
进阶玩法
- 多目标同步:一台源机同时推送到多台目标机(多
sync{}
配置块) - 结合 Docker:容器卷挂载 + lsyncd 实现容器间实时同步
- 结合 WAF/安全审计:同步前做文件校验,防止恶意代码传播