rsync daemon模式可搭建生产级同步服务器,支持多客户端按需访问、用户认证、权限控制和日志记录;服务端需配置rsyncd.conf、创建用户与密码文件并启动服务,客户端通过::语法连接模块进行推拉操作。

直接用 rsync 搭建同步服务器,核心是启用它的 daemon 模式(即 rsyncd 服务),而不是只靠 SSH 临时拉取。这种方式支持多客户端按需访问不同模块、带用户认证、权限控制和日志记录,适合生产环境长期运行。
服务端:安装并配置 rsyncd
先确认已安装 rsync 和 xinetd(CentOS/RHEL 系统)或仅 rsync(Debian/Ubuntu 可用 systemd 直接启 daemon):
- CentOS 7/8:
yum install rsync xinetd -y - Ubuntu/Debian:
apt install rsync -y(新版默认支持 systemd 管理 rsyncd)
编辑主配置文件 /etc/rsyncd.conf,例如提供一个可读写的备份模块:
uid = rsync gid = rsync use chroot = no max connections = 10 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [backup] path = /data/backup/ comment = 公司日常备份目录 read only = no write only = no list = yes auth users = backupuser secrets file = /etc/rsyncd.secrets hosts allow = 192.168.1.0/24 ignore errors = yes
创建运行用户和同步目录:
useradd -s /sbin/nologin -M rsyncmkdir -p /data/backup && chown rsync:rsync /data/backup
生成密码文件 /etc/rsyncd.secrets(格式:用户名:密码),并设权限:
echo "backupuser:MyPass123" > /etc/rsyncd.secretschmod 600 /etc/rsyncd.secrets
启动服务:
- CentOS + xinetd:
systemctl enable xinetd && systemctl start xinetd(确保 xinetd 已配置启用 rsync) - Ubuntu/Debian 或新版 CentOS:
systemctl enable rsyncd && systemctl start rsyncd
开放防火墙端口(默认 873):
firewall-cmd --add-port=873/tcp --permanent && firewall-cmd --reload
客户端:安全连接并测试同步
客户端无需安装额外服务,只需 rsync 命令即可访问服务端模块:
- 创建本地密码文件(避免明文暴露):
echo "MyPass123" > /tmp/rsync.pass && chmod 600 /tmp/rsync.pass - 推送文件到服务端:
rsync -avzP --delete --password-file=/tmp/rsync.pass /home/docs/ backupuser@192.168.1.100::backup - 拉取文件到本地:
rsync -avzP backupuser@192.168.1.100::backup /mnt/backup/ --password-file=/tmp/rsync.pass
注意::: 表示走 rsync daemon 协议;IP 后跟模块名(如 ::backup),不是路径。
关键配置项说明
几个容易出错但影响功能的配置点:
- uid/gid:建议用非 root 用户(如 rsync),避免权限越界;若同步目录属主为 www-data,可设为对应用户
- use chroot = no:必须关闭,否则软链接、绝对路径可能失效,且对非 root 用户更友好
-
hosts allow/deny:白名单优先,推荐精确到网段或 IP,禁用
0.0.0.0/0 -
read only:设为
no才允许客户端上传;write only = yes可禁止下载(适用于日志归集等场景) - log file:务必检查 SELinux 或目录权限,否则 rsyncd 启动失败且无提示
进阶:配合 inotify 实现自动实时同步
rsync 本身不监听文件变化,需搭配 inotify-tools 或 sersync:
- 安装 inotify-tools:
yum install inotify-tools或apt install inotify-tools - 写一个监听脚本,当源目录变更时触发 rsync 命令(注意加锁防并发)
- 或部署 sersync:它封装了 inotify + rsync,提供 XML 配置、失败重试、多实例支持,更适合企业级使用
单纯 rsync daemon 已满足定时同步、手动触发、多客户端分权访问等基础需求,实时性需额外工具补足。











