rsync 守护进程模式
让 rsync 以服务方式常驻,通过模块名暴露目录,客户端用 ::模块名 或 rsync:// 地址访问。它省掉了每次连接都走 SSH 的开销,适合固定的备份通道:服务端只开放一个端口、按模块控制读写与来源,客户端一行命令就能同步。代价是 rsyncd 自身认证为明文,公网使用必须叠加隧道或限制来源。
基本信息
| 适用平台 | Linux/Unix(rsync 自带守护进程),端口 873/TCP |
|---|---|
| 权限要求 | 服务端以 root 启动才能保留属主与设备文件;模块可按 uid/gid 降权 |
| 配置文件 | /etc/rsyncd.conf,模块用 [名称] 分节定义 |
| 认证方式 | auth users + secrets file(明文口令),或配合 SSH 隧道 |
典型使用场景
- 多台客户端向同一备份服务器推送数据,服务端集中管理模块与配额
- 固定内网通道的每日同步,比逐台配置 SSH 免密更易审计
- 只读分发:把软件包或镜像目录以 read only 模块提供下载
- 拉模式备份:备份服务器主动从业务机拉取,业务机只开放 873
- 跨部门数据交付:按模块授予不同账号的读写范围
服务端 /etc/rsyncd.conf
服务端 /etc/rsyncd.conf
[backup] # 模块名,客户端以 ::backup 访问
path = /backup/data # 模块对应的真实目录
read only = no # no 表示允许客户端写入
uid = backup # 写入时的属主,避免以 root 落盘
auth users = backupuser # 允许的用户名
secrets file = /etc/rsyncd.secrets # 权限应设为 600
hosts allow = 10.0.0.0/24 # 仅允许备份网段
hosts deny = * # 其余来源一律拒绝
max connections = 4 # 并发上限,保护磁盘
log file = /var/log/rsyncd.log客户端使用
客户端使用
rsync -av /data/ backupuser@10.0.0.5::backup/ # 双冒号:走守护进程模式
rsync -av /data/ rsync://backupuser@10.0.0.5/backup/ # 等价的 URL 写法
rsync -av --delete /data/ backupuser@10.0.0.5::backup/ # 镜像同步,注意删除语义
rsync --list-only backupuser@10.0.0.5:: # 列出可用模块
systemctl enable --now rsyncd # 启用服务(Debian 系为 rsync)配置项读法
| 配置项 | 含义 | 风险点 |
|---|---|---|
| read only | 模块是否允许写入 | 设为 no 又未限制来源,等于开放上传口 |
| hosts allow / deny | 来源网段控制 | 语法写错可能反而放开限制 |
| auth users + secrets | 账号与口令文件 | secrets 权限过宽会泄露口令 |
| max connections | 并发连接上限 | 过高会把磁盘跑满,影响其他业务 |
rsyncd 的认证是明文传输口令的,跨公网或跨不可信网段时必须走 SSH 隧道(ssh -L 873:127.0.0.1:873)或只在内网开放。真正的加密传输方案是 rsync over SSH,而非守护进程模式。