rsync 守护模式是什么
873 是 rsync 以守护进程方式运行时的监听端口,客户端用 rsync:// 前缀访问。守护模式由 rsyncd.conf 定义模块(module),每个模块对应一个目录与一组访问规则,镜像站、软件源同步、备份汇聚多采用这套方式。另一条路线是走 SSH 的远程 shell 模式,数据在 22 端口上传输,不需要 873。
基本信息
| 服务 | rsync(--daemon) |
|---|---|
| 协议 | TCP 873(IANA 同时登记了 UDP) |
| 配置 | /etc/rsyncd.conf + rsyncd.secrets |
| 认证 | 模块级账号密码,明文存于 secrets 文件 |
| 安全等级 | 仅内网或已加固的公网模块 |
典型使用场景
- 镜像分发:下游站点从一个只读模块增量拉取上游内容
- 备份汇聚:客户端定时把快照推送到备份服务器模块
- 应用发布:构建产物同步到目标机目录后再触发重启
- 跨机房数据搬迁:先用 --dry-run 核对差异清单再执行
- 排障:模块列不出来或认证失败时,从 rsyncd 日志与端口监听两端确认
查看对端模块列表
查看对端模块列表
rsync rsync://mirror.example.com/ # 列出公开模块
rsync rsync://mirroruser@mirror.example.com/ # 带认证查看
ss -lntp | grep ':873' # 本机是否在守护模式
systemctl status rsyncd | head -5rsyncd.conf 模块示例
rsyncd.conf 模块示例
[pub]
path = /srv/mirror
read only = yes
auth users = mirroruser
secrets file = /etc/rsyncd.secrets
hosts allow = 192.0.2.0/24
hosts deny = *
max connections = 4
log file = /var/log/rsyncd.log同步命令:守护模式与 SSH 模式
同步命令:守护模式与 SSH 模式
rsync -avz --delete rsync://mirroruser@mirror.example.com/pub/ /srv/mirror/
# SSH 模式(加密,走 22 端口而非 873)
rsync -avz --delete -e 'ssh -p 22' user@server:/srv/mirror/ /srv/mirror/
# 干跑预演 + 限速
rsync -avz --dry-run --bwlimit=20M rsync://mirror.example.com/pub/ /srv/mirror/常见角色与要点
| 场景 | 要点 | 风险 |
|---|---|---|
| 镜像分发 | 只读模块 + 来源限制 | 匿名可写即成投毒入口 |
| 备份汇聚 | 按主机分目录、保留版本 | 客户端误删会同步到备份端 |
| 应用发布 | 先 dry-run 再 delete | 错写路径删空目标目录 |
| 公网同步 | 叠加 SSH 隧道或专线 | 873 传输本身不加密 |
匿名可写模块等于公开投毒面:公共镜像务必区分只读模块与内部可写模块,并限制来源网段;rsync 守护模式的传输不加密,跨公网应改用 SSH 隧道。
发布流约定:--delete 会删除目标端多余文件,执行前先用 --dry-run 看清单;海量小文件加 -z 的压缩收益有限,可配合 --partial 断点续传与 --info=progress2 观察进度。
权限排障口诀:先看 hosts allow 是否命中来源地址,再看 secrets 文件权限与账号名是否一致,最后确认 path 目录对运行用户的读写权限;三者任一不符都会表现为认证失败或权限拒绝。