lsyncd 与 rsync/rsyncssh/rsyncd 区别

张开发
2026/5/5 10:39:06 15 分钟阅读
lsyncd 与 rsync/rsyncssh/rsyncd 区别
一、前言lsyncd 是基于 inotify 实时监听文件变更并触发同步的轻量级文件同步工具默认依赖 rsync 命令实现同步而非 rsyncd 服务。在 Linux 运维中rsync 命令、rsyncssh 模式、rsyncd 服务极易混淆本文结合 lsyncd 实际使用场景清晰梳理三者差异、适用场景及工作原理并提供生产常用的 lsyncd rsyncssh 完整配置模板。二、核心概念区分rsync是一个命令行工具客户端程序用于本地/远程文件增量同步是 lsyncd 实现同步的核心依赖本身不具备守护进程能力。rsyncd是 rsync 的守护进程服务运行在目标服务器监听 873 端口被动等待客户端连接同步lsyncd 本身不直接管理或依赖该服务。lsyncd是文件变更触发器自身不实现同步逻辑仅通过调用 rsync 相关命令完成数据主动推送核心作用是“监听触发”。三、lsyncd 中三种同步方式对比对比维度rsync 命令模式default.rsyncrsyncssh 模式default.rsyncsshrsyncd 服务核心原理本地执行 rsync 命令直接网络连接目标服务器 rsyncd 服务端口873本质仍调用 rsync 命令通过 SSH 加密通道传输在目标机临时启动 rsync 进程目标服务器以守护进程运行rsync \-\-daemon监听 873 端口被动接收同步lsyncd 配置sync 块指定default\.rsync远程路径格式userhost::模块名sync 块指定default\.rsyncssh额外配置 SSH 相关参数lsyncd 不直接使用需通过 rsync 模式间接访问 rsyncd 模块传输安全性默认不加密依赖密码文件认证安全性较低高全程 SSH 加密传输支持密钥免密认证生产推荐低自带认证机制简单传输明文需额外加固防火墙配置复杂度中等需目标机配置 rsyncd 模块、权限及密码文件低无需开启 873 端口仅需源机与目标机 SSH 互通高需维护/etc/rsyncd\.conf、权限、密码文件等端口依赖依赖目标机 873 端口仅依赖 SSH 22 端口默认可自定义固定监听 873 端口生产推荐程度一般多用于已部署 rsyncd 服务的遗留场景最高lsyncd 官方推荐最佳实践适配绝大多数生产场景不推荐与 lsyncd 配合使用仅适合独立搭建集中式同步服务四、lsyncd rsyncssh 完整配置模板生产可用4.1 配置文件路径lsyncd 配置文件默认路径/etc/lsyncd.conf可自定义路径启动时通过-f参数指定4.2 完整配置模板带注释-- 全局配置通用设置 settings { logfile /var/log/lsyncd/lsyncd.log, -- 日志文件路径需提前创建目录赋予权限 statusFile /var/log/lsyncd/lsyncd.status, -- 状态文件记录同步进度 inotifyMode CloseWrite, -- 监听事件文件关闭写入后触发同步避免文件未写完就同步 maxDelays 1, -- 最大延迟时间秒文件连续变更时延迟1秒再同步减少频繁同步 nodaemon false, -- 是否以守护进程模式运行false守护进程生产推荐 user root, -- 执行同步的用户需拥有源目录读取权限、目标机SSH登录权限 group root -- 执行同步的用户组 } ​ -- 同步任务配置可配置多个sync块实现多目录同步 sync { default.rsyncssh, -- 指定同步模式rsyncssh核心 source /data/nfs_share/, -- 源服务器需要同步的目录末尾加/表示同步目录内内容不加则同步目录本身 host 192.168.10.20, -- 目标服务器IP地址或域名 targetdir /data/backup/, -- 目标服务器接收同步的目录需提前创建赋予目标用户写入权限 ssh { port 22, -- SSH端口默认22若自定义端口需修改 identityFile /root/.ssh/id_rsa, -- SSH密钥文件路径免密登录必备需提前配置密钥互通 options -o StrictHostKeyCheckingno -- 跳过SSH主机密钥校验避免首次连接交互 }, rsync { archive true, -- 归档模式保留文件权限、属主、属组、时间戳等属性 verbose true, -- 详细输出同步日志便于排查问题 compress true, -- 传输前压缩文件提升同步效率适合大文件、跨网络同步 delete true, -- 同步时删除目标端不存在的文件保持源端与目标端完全一致谨慎开启避免误删 links true, -- 同步符号链接文件 perms true, -- 保留文件权限 owner true, -- 保留文件属主需目标机有对应用户 group true, -- 保留文件属组需目标机有对应用户组 exclude { -- 排除不需要同步的文件/目录支持通配符 .git/, *.log, temp/* } } } ​ -- 可选多目录同步示例如需同步多个目录新增sync块即可 -- sync { -- default.rsyncssh, -- source /data/www/, -- host 192.168.10.20, -- targetdir /data/backup/www/, -- ssh { -- port 22, -- identityFile /root/.ssh/id_rsa -- }, -- rsync { -- archive true, -- delete false, -- 此处关闭delete避免误删目标端其他文件 -- compress true -- } -- }4.3 配置前置条件必做源服务器与目标服务器 SSH 互通且配置密钥免密登录避免同步时输入密码 # 源服务器生成SSH密钥无需设置密码ssh-keygen -t rsa -P \#34;\#34; -f /root/.ssh/id_rsa# 将公钥推送至目标服务器替换目标IPssh-copy-id -i /root/.ssh/id_rsa.pub root192.168.10.20创建日志目录并赋予权限 mkdir -p /var/log/lsyncdchown root:root /var/log/lsyncdchmod 755 /var/log/lsyncd目标服务器创建接收目录并赋予权限 mkdir -p /data/backup/chown root:root /data/backup/chmod 755 /data/backup/源服务器与目标服务器均安装 rsynclsyncd 依赖 rsync 命令 # CentOS/RHELyum install -y rsync lsyncd# Ubuntu/Debianapt update \\ apt install -y rsync lsyncd五、lsyncd rsyncssh 实际工作机制lsyncd 通过 inotify 监控本地source目录的文件变更新增、修改、删除、重命名等当文件变更达到maxDelays设定的延迟时间后lsyncd 自动拼装 rsync 命令通过 SSH 加密通道基于配置的密钥连接目标服务器无需在目标机部署 rsyncd 服务目标服务器临时启动 rsync 进程接收源服务器推送的数据完成增量同步同步完成后目标服务器临时 rsync 进程自动退出同步日志写入logfile。六、实际执行的 rsync 命令示例lsyncd 在 rsyncssh 模式下后台实际执行的命令自动拼装无需手动执行rsync --archive --verbose --compress --delete --links --perms --owner --group -e ssh -p 22 -i /root/.ssh/id_rsa -o StrictHostKeyCheckingno --exclude.git/ --exclude*.log --excludetemp/* /data/nfs_share/ root192.168.10.20:/data/backup/七、故障排查与验证方法7.1 手动验证同步链路直接在源服务器运行上述 rsync 命令可快速验证SSH 连通性、密钥权限、目录权限、同步参数是否正常是排查同步故障的首选方式。7.2 观察同步进程触发文件变更后如在源目录创建文件执行以下命令可看到 lsyncd 调用的 rsync 进程确认同步正在执行ps aux | grep rsync7.3 查看日志排查问题同步失败、监听异常等问题可通过查看 lsyncd 日志定位tail -f /var/log/lsyncd/lsyncd.log # 查看状态文件同步进度、失败记录 cat /var/log/lsyncd/lsyncd.status7.4 常见故障解决SSH 认证失败检查密钥文件权限需为 600、公钥是否已推送至目标机、SSH 端口是否正确同步无反应检查 lsyncd 服务是否启动、inotify 监听是否正常、源目录是否存在目标目录无写入权限检查目标目录权限、属主属组是否正确排除目录未生效检查 exclude 配置格式确保路径正确通配符使用规范。八、总结核心区别rsync 是命令工具rsyncd 是守护进程服务lsyncd 只调用 rsync 命令不依赖 rsyncd 服务核心作用是“监听触发同步”。最佳实践rsyncssh 模式是 lsyncd 远程同步的最优方案配置简单、安全加密、无需额外端口适配绝大多数生产场景。配置关键提前配置 SSH 密钥免密登录、正确设置目录权限、合理配置 rsync 参数尤其是 delete 选项需谨慎开启。排查技巧优先手动执行 rsync 命令排查链路再通过 lsyncd 日志定位具体故障效率最高。

更多文章