lsyncd同步配置案例:171 → 172 WebFuture 实时同步部署

来源:本站原创 点击数: 发布时间:2026年08月19日

1. 同步架构

171 主服务器
10.0.64.171
/data/www/webfuture
        │
      lsyncd
        │
   rsync + SSH
        │
        ▼
172 从服务器
10.0.64.172
/data/www/webfuture
  • lsyncd 只安装在 171

  • 172 不需要安装 lsyncd

  • 172 只需要 rsync + sshd

  • 同步方向:171 → 172

  • lsyncd 使用 root 运行

  • WebFuture 文件保持 www-data:www-data


2. 安装软件

171服务器安装lsyncd   rsync

yum install lsyncd rsync -y

172服务器安装rsync

yum install rsync -y

确认 SSH 端口:

ss -lntp | grep 1022

3. 配置 SSH 免密

171 必须可以免密登录 172:

ssh -p1022 root@10.0.64.172

使用:

/root/.ssh/id_rsa

确保不需要输入密码。


4. 准备同步目录

两台服务器:

mkdir -p /data/www/webfuture
chown -R www-data:www-data /data/www/webfuture

检查用户:

id www-data

最好保证 171、172 的 www-data UID/GID 一致。


5. 先手动测试 rsync

在 171:

rsync -aHAXv \
-e "ssh -p1022 -i /root/.ssh/id_rsa" \
/data/www/webfuture/ \
root@10.0.64.172:/data/www/webfuture/

确认 172 文件及权限正常后,再启用 lsyncd。


6. 配置 lsyncd

171 创建:

/etc/lsyncd.conf

配置:

-- ============================================================
-- Lsyncd 全局配置
-- ============================================================
settings {
    logfile        = "/var/log/lsyncd.log",      -- 日志
    statusFile     = "/var/log/lsyncd.status",   -- 状态文件
    statusInterval = 20,                         -- 状态更新间隔
    inotifyMode    = "CloseWrite",               -- 文件写入完成后同步
}
sync {
    default.rsync,
    source = "/data/www/webfuture",              -- 源目录
    target = "root@10.0.64.172:/data/www/webfuture", -- 目标目录
    delay = 0,                                   -- 立即同步
    rsync = {
        archive  = true,                         -- 保留文件属性
        verbose  = true,                         -- 显示详细信息
        compress = false,                        -- 不压缩
        _extra = {
            "-e",
            "ssh -p1022 -i /root/.ssh/id_rsa",   -- SSH端口和密钥
            "--chown=www-data:www-data",         -- 目标文件权限
            "--exclude=App_Data/"                -- 排除App_Data目录
        }
    }
}

最关键的 4 个配置

source = "/data/www/webfuture"

监听 171 的 WebFuture目录。

target = "root@10.0.64.172:/data/www/webfuture"

同步到 172

delay = 0

0 秒=实时监听,检测到目录或文件变化后立即触发同步。

archive = true

使用 rsync -a,尽量保持源文件的权限、属主、属组、时间等属性。


7. 启动 lsyncd

在171服务器启动服务:

systemctl daemon-reload
systemctl enable lsyncd
systemctl start lsyncd

检查:

systemctl status lsyncd

查看同步日志:

tail -f /var/log/lsyncd.log

8. 测试实时同步

新增文件

171:

touch /data/www/webfuture/test.txt

检查 172:

ls -l /data/www/webfuture/test.txt

修改文件

echo "hello" >> /data/www/webfuture/test.txt

删除文件

rm -f /data/www/webfuture/test.txt

确认 172 上也被删除。


9. 最终运行方式

部署完成以后,不再需要原来的:

crontab

实时同步流程:

171 WebFuture 目录
       ↓
新增 / 修改 / 删除
       ↓
     lsyncd
       ↓
    inotify
       ↓
   rsync + SSH
       ↓
172 WebFuture 目录

建议生产环境另外保留一个每天凌晨执行的全量 rsync 作为兜底,防止 lsyncd 服务异常或 inotify 事件丢失。