🚀 深入理解 rsync daemon 模式(守护进程)
在日常的运维、构建和部署场景中,rsync
是一个高效而灵活的工具。除了我们常见的基于 ssh
的 rsync 用法,rsync
还提供了一个守护进程(daemon)模式,适用于高性能、长期服务型的文件同步需求,尤其适合企业内网的大规模文件同步、构建产物推送等自动化场景。
📌 什么是 rsync daemon 模式?
与传统的 rsync -e ssh
模式不同,daemon 模式是服务端常驻监听 TCP 873 端口的一种方式。客户端通过类似如下命令访问服务端:
bash
rsync -av 文件路径 rsync://host:873/模块名/子路径/
或更常见的简写:
bash
rsync -av 文件路径 host::模块名/子路径/
🔁 特别适用于内网环境,可以避免 ssh 握手的额外开销,提高效率。
⚙️ 配置 rsync 守护进程
1️⃣ 创建配置文件 /etc/rsyncd.conf
一个典型的配置文件如下:
ini
uid = root
gid = root
port = 873
use chroot = yes
max connections = 200
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
hosts allow = 10.0.0.0/8
hosts deny = *
[ios_new_storage]
path = /data1/ios
read only = no
list = true
ignore errors = yes
🔍 字段说明:
字段 | 含义 |
---|---|
uid , gid |
守护进程读写文件使用的用户/组身份 |
port |
默认监听 873 端口 |
use chroot |
是否启用 chroot 限制路径(安全性考虑) |
max connections |
最大并发连接数 |
hosts allow , hosts deny |
白名单与黑名单机制 |
[模块名] |
模块名,客户端通过 host::模块名 访问 |
path |
模块实际映射的目录 |
read only |
是否只读 |
list |
是否允许被 rsync host:: 列出来 |
🚀 启动守护进程
✅ 手动启动:
bash
sudo rsync --daemon
可指定配置文件:
bash
sudo rsync --daemon --config=/etc/rsyncd.conf
🔄 验证是否运行
bash
ps aux | grep '[r]sync --daemon'
sudo lsof -i :873
📤 客户端访问示例
从构建机同步文件到 rsync 服务端:
bash
rsync -av /local/file [IP地址]::ios_new_storage/your/path/
如果要列出服务端支持的模块:
bash
rsync [IP地址]::
🔐 访问控制和权限
- 建议配合
hosts allow
和hosts deny
限制访问来源。 - 如果需要认证机制,还可以配置:
ini
auth users = deployer
secrets file = /etc/rsyncd.secrets
并在 /etc/rsyncd.secrets
中:
bash
deployer:your_password
客户端命令:
bash
rsync -av /local/path deployer@host::module --password-file=/path/to/pass
⚠️ 注意:守护进程认证是明文密码,不建议在公网使用,建议配合内网环境或 VPN 使用。
🧯 常见问题排查
问题 | 原因 | 解决方案 |
---|---|---|
connect refused |
守护进程未启动 / 端口未开放 | 启动守护进程,确认 873 端口 |
unknown module |
模块名拼错或配置缺失 | 查看 /etc/rsyncd.conf 中模块配置 |
无响应 | 防火墙阻止 | 确认防火墙规则允许 TCP 873 |
📎 Daemon 模式 vs SSH 模式
特性 | Daemon 模式 | SSH 模式 |
---|---|---|
安全性 | 适合内网 / VPN 使用 | 通过 SSH 通信加密更安全 |
配置要求 | 服务端需配置并启动守护进程 | 无需服务端额外配置 |
性能 | 更高(适合频繁传输) | 较低(有 ssh 握手) |
认证机制 | 明文(不加密) | 基于 SSH 密钥 / 密码 |
✅ Last
rsync
的 daemon 模式为构建系统、大规模数据同步提供了高效、稳定的方案。在可信网络或 VPN 环境中,它能够提供比 ssh 模式更快的性能,并且支持模块化管理,适合部署在 CI/CD 等自动化流程中。