微信优化

weixinyouhua

rsync配置文件怎么写?rsync配置文件参数详解

2026-09-20 20:23:19

rsync 配置文件的核心要点是:服务端路径多数放在 /etc/rsyncd.conf,模块里必须写对 path、uid/gid、hosts allow,密码文件权限要设为 600,否则认证会直接失败。

rsync 配置文件位置与基础结构

服务端真正的配置文件叫 rsyncd.conf,大多数 Linux 发行版默认放在 /etc/ 目录下,客户端一般不需要单独的 rsyncd.conf,但密码文件也算一种轻量配置,通常用 –password-file 参数指定。

国内 Linux 服务器 rsync 配置文件放哪里

CentOS、Rocky Linux、AlmaLinux 用 yum/dnf 安装 rsync 后,/etc/rsyncd.conf 可能不存在,需要手动创建,Ubuntu、Debian 安装后同样没有默认文件,手动建立即可,部分国产系统如统信 UOS、麒麟,只要基于 RPM 或 DEB 包管理,路径通用 /etc/rsyncd.conf,若用源码编译安装,可以在编译时通过 –sysconfdir 指定配置目录,默认常落在 /usr/local/etc 下。

rsync 配置文件怎么写才不报错

先给出一份最小可用配置:

uid = nobody
gid = nobody
use chroot = yes
max connections = 10
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[backup]
path = /data/backup
comment = backup module
read only = yes
list = yes
auth users = backupuser
secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.1.0/24

日常写配置文件最容易报错的地方有这么几类:

  • path 指向的目录不存在,或者 rsync 启动用户没有访问权限。
  • secrets file 权限不是 600,rsync 会直接拒绝加载。
  • hosts allow 写成单一 IP,但客户端实际出口是 NAT 后的地址。
  • 模块名重复或包含特殊字符。
  • 修改配置后没有重启 rsync 服务。

想快速看报错原因,可以前台启动:

rsync --daemon --config=/etc/rsyncd.conf --no-detach

这样错误信息会直接输出到终端。

rsync 服务端配置文件关键参数详解

配置文件里的参数分为全局参数和模块参数,模块参数只对某个模块生效,常见参数如下:

rsync配置文件怎么写?rsync配置文件参数详解

参数 作用 常见设置
uid/gid 模块传输时使用的本地用户身份 nobody 或专用 rsync 用户
use chroot 把模块路径锁在根目录内 yes
max connections 最大并发连接数 5-20
timeout 连接空闲超时时间 300
read only 是否只允许读取 yes 仅允许下载,no 允许上传
auth users 允许认证的用户名列表 与 secrets file 对应
secrets file 密码文件路径 /etc/rsyncd.secrets
hosts allow/deny 按 IP/网段限制客户端 内网网段
list 是否允许客户端列出模块 yes/no
ignore errors 传输遇到单文件错误不提前中断 备份场景常加

ignore errors 适合大目录备份,遇到个别文件损坏或权限不够时,不会让整个同步任务停掉。

rsync 密码文件配置与权限问题

服务端密码文件格式是“用户名:密码”,每行一个:

backupuser:123456

客户端密码文件只需要密码本身:

123456

权限务必设置为 600:

chmod 600 /etc/rsyncd.secrets
chmod 600 /home/user/rsync.pass

常见错误就三个:

  • 服务端 secrets file 权限是 644,会报 secrets file must not be other-accessible。
  • 客户端密码文件里多写了用户名,认证也会失败。
  • 密码含特殊字符时没有用引号,可能导致解析不一致。

rsync 和 scp 备份对比:哪个更适合你的同步任务

rsync 和 scp 都可以通过 SSH 通道传输文件,但 rsync 配置文件让服务端模块化管理更清晰,scp 没有配置文件概念,两者对比:

对比项 rsync scp
增量传输

rsync配置文件怎么写?rsync配置文件参数详解

支持,只传变化部分

不支持,全量复制
断点续传 支持 –partial 不完整
服务端配置文件 /etc/rsyncd.conf 模块化 无
认证方式 模块密码或 SSH 仅 SSH
过滤规则 –exclude/–include 不支持
带宽控制 –bwlimit 无内置
定时备份场景 合适 只适合一次性复制

结论很清楚:需要固定目录备份、增量传输、限制内网访问时,rsync 配置文件方案更省心。

rsync 定时备份目录到另一台服务器配置步骤

场景:A 服务器的 /data/web 每天凌晨备份到 B 服务器的 /data/backup/web。

B 服务器先做三件事:

  • 创建目录 /data/backup/web。
  • 编辑 /etc/rsyncd.conf 增加 [webbackup] 模块,path 指向该目录,read only = no,auth users = backup,secrets file 指向密码文件。
  • 启动 rsync –daemon,并设置开机自启。

A 服务器再配置客户端:

  • 创建密码文件 /etc/rsync_client.pass,内容仅为密码,chmod 600。
  • 加入 crontab:
30 2    rsync -avz --delete /data/web/ backup@192.168.1.20::webbackup --password-file=/etc/rsync_client.pass

这里要注意源路径末尾的斜杠:/data/web/ 表示同步目录内容本身,不加斜杠会多出一层 web 目录。

rsync 免费方案与商业同步工具成本对比

rsync 本身是 GPL 开源协议,不需要购买授权,国内服务器同样可以直接用 yum/dnf/apt 安装,没有任何授权费用,商业备份软件通常按节点数或容量付费,对于多台服务器长期同步,成本会明显增加,业内专家指出,中小团队用 rsync 做服务器间文件同步,技术门槛并不高,主要成本只在首次配置和日常日志巡检。

rsync 配置文件安全加固建议

行业共识认为,直接把 rsync 端口暴露到公网风险较高,至少要做三层限制:

  • 服务端模块设置 hosts allow 仅允许内网网段。
  • rsync配置文件怎么写?rsync配置文件参数详解

  • 防火墙只放行指定源 IP 到 873 端口。
  • 若必须跨公网,优先走 SSH 隧道:rsync -e ‘ssh -p 22’,不开放 873 端口。
  • secrets file 权限保持 600,模块目录属主与 uid/gid 保持一致。

rsync 配置文件常见问题排查思路

rsync: failed to connect 怎么处理

先检查服务端 873 端口是否监听:

ss -tlnp | grep 873

再检查防火墙和云安全组是否放行,最后看 /var/log/rsyncd.log 是否提示 hosts allow 拒绝。

rsync: auth failed on module 怎么处理

大概率是密码文件权限或密码内容问题,先确认服务端 secrets file 权限 600、格式 user:password,再确认客户端 –password-file 只含密码且权限 600,最后确认 auth users 中的用户名在服务端密码文件里存在。

rsync 配置文件修改后不生效

修改 /etc/rsyncd.conf 后不会自动热加载,需要重启服务:

systemctl restart rsyncd

或手动结束 rsync 进程后重新 rsync –daemon 启动。

把服务端路径、模块 path、hosts allow、secrets file 权限这四项写对,rsync 配置文件基本不会出现大的故障。 日常维护只需要关注日志和定时任务执行结果。

rsync 配置文件常见问题问答

rsync 配置文件里 secrets file 怎么设置?

服务端 secrets file 每行写“用户名:密码”,文件权限必须设置为 600,客户端密码文件只写密码本身,同样权限 600,若权限过宽,rsync 会拒绝认证。

rsync 客户端需要配置文件吗?

通常不需要服务端那样的 rsyncd.conf,但使用密码认证时,客户端需要一个只含密码的密码文件,并通过 –password-file 参数指定,该文件也属于 rsync 配置的一部分。

rsync 配置文件中的 uid 和 gid 起什么作用?

uid 和 gid 决定 rsync 守护进程在读写模块目录时使用的本地用户身份,例如设置 uid = nobody、gid = nobody,实际文件操作权限就等于 nobody 用户对目标目录的权限。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待