微信优化

weixinyouhua

rsync配置文件在哪?rsync配置文件怎么修改

2026-09-20 17:22:06

rsync配置文件是/etc/rsyncd.conf,所有同步行为都围绕它展开,掌握这个文件就掌握了rsync服务端的核心。

rsync之所以在运维圈经久不衰,靠的不是花哨的界面,而是那个看似朴素却极其强大的配置文件,很多朋友问我rsync怎么配置,今天就从这个文件的每一行入手,把读写权限、同步范围、日志切分这些事一次说透。

先搞懂rsync配置文件在哪

rsync服务端配置文件默认路径是/etc/rsyncd.conf,但别以为它天生就存在,多数Linux发行版需要手动创建:

touch /etc/rsyncd.conf

有些场景下你可能想换个位置,比如放在/home/rsync/下,这就需要启动服务时显式指定:

rsync --daemon --config=/home/rsync/rsyncd.conf

行业共识认为,保持默认路径是最省心的选择,因为systemd服务单元和手动启动脚本都默认去/etc/下找配置,如果改了路径,别忘了同步修改systemd配置或者启动参数,否则服务起不来还找不到原因。

另外建议用下面命令检查配置语法:

rsync --daemon --config=/etc/rsyncd.conf --dry-run

没报错就说明基本语法没问题,这是一个被很多人忽略的排查手段。

rsync配置文件结构详解

一个完整的rsyncd.conf分全局参数和模块参数两大部分,全局参数作用于整个服务,模块参数只对特定同步目录生效,下面拆开来讲。

全局参数:管好服务本身的属性

全局参数写在文件顶部,没有缩进,常用的有这么几个:

  • uid/gid:指定rsync进程以哪个用户身份运行,做备份时建议设为root,否则同步下来的文件属主会变成nobody,恢复时会遇到权限问题
  • port:默认监听873端口,改用其他端口需在配置里写明
  • use chroot:设为yes时,rsync会在同步前将进程根目录切换到模块路径下,提升安全性,多数情况下建议开启,但如果你需要符号链接支持,就得设为no
  • max connections:限制最大连接数,防止并发太多拖垮服务器
  • pid file:存放进程PID的文件路径,默认/var/run/rsyncd.pid
  • lock file:配合max connections使用,默认/var/run/rsyncd.lock
  • log file:日志文件路径,强烈建议配置,不然后期问题排查无据可查
  • rsync配置文件在哪?rsync配置文件怎么修改

模块参数:定义同步目录的核心配置

模块以方括号中的名字开头,

[backup]
path = /data/backup
comment = 主服务器备份目录
read only = no
auth users = backup_user
secrets file = /etc/rsyncd.secrets

每个模块相当于一个独立的同步入口,实际使用中,不同业务目录可以拆成多个模块,实现权限和同步策略的隔离。

list参数控制模块是否在客户端可见,设为no后,客户端执行rsync –list-only看不到这个模块,但知道名字仍可访问,用名字访问确实是基础操作。

模块参数中最重要的三个是path、auth users和secrets file,path决定同步哪个目录,后两者决定谁能同步。

常用参数对比表

参数 取值 作用 使用建议
uid root/nobody 运行身份 备份场景用root
read only yes/no 是否允许写入 分发场景用yes
list yes/no 模块是否列表可见 提高隐蔽性用no
use chroot yes/no 是否启用chroot 默认yes
max connections 数字 并发限制 高并发场景适当调大
timeout 秒数 连接空闲超时 建议300秒

rsync配置文件完整实例

纸上谈兵没意思,下面给一个生产环境可用的完整配置,实现主服务器推送备份到备份机:

# /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
timeout = 300
port = 873
[www]
path = /var/www/html
comment = 网站代码同步
read only = no
auth users = rsync_backup
secrets file = /etc/rsyncd.secrets
list = no
[database]
path = /data/mysql_backup
comment = 数据库备份同步
read only = no
auth users = rsync_backup
secrets file = /etc/rsyncd.secrets
list = no

配置文件写好后,创建密码文件是关键一步:

echo "rsync_backup:YourStrongPassword" > /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets

密码文件权限必须设为600,否则rsync直接拒绝启动,这条命令验证了服务端执行权限的硬性要求。

rsync配置文件在哪?rsync配置文件怎么修改

启动守护进程:

rsync --daemon

服务端配置完成后,客户端用这个命令测试连接:

rsync -avz --list-only backup_user@服务器IP::www

能列出文件列表说明配置生效了,手动测试时输出的常见报错有类似@ERROR: auth failed on module www的提示,这让排错有方向。

同步场景配置演示

网站代码备份是我们常用的一个场景,服务端配置好,客户端用一行命令搞定:

rsync -avz --progress --delete backup_user@服务器IP::www /backup/websites/

增量备份靠rsync的算法自动识别变化,不会每次全量传输,挺省带宽的。

数据库备份场景中,加上排除规则不压缩太大:

rsync -avz --exclude=".log" backup_user@服务器IP::database /backup/mysql/

排除规则写在命令行容易出错,推荐创建一个exclude文件统一管理:

rsync -avz --exclude-from='/etc/rsync_exclude.txt' backup_user@服务器IP::database /backup/mysql/

这在备份时不用每个参数都敲一遍,养成好习惯后维护成本低很多。

rsync配置常见问题排查

实际运维中总会和各种报错打交道,这里把最常见的几个场景列出来,附上解决思路。

@ERROR: auth failed on module

这提示认证失败,先从密码文件入手排查,检查服务端密码文件格式是否正确、权限是否是600,注意客户端不需要密码文件,但得用--password-file指定密码串,非交互式同步必配:

echo "YourStrongPassword" > /etc/rsync_client.pass
chmod 600 /etc/rsync_client.pass
rsync -avz --password-file=/etc/rsync_client.pass backup_user@服务器IP::www /backup/

rsync同步失败怎么排查

同步失败时,日志是首要依据,前面配置了log file,这里就能派上大用场:

tail -f /var/log/rsyncd.log

常见原因有磁盘满、目录权限不足、端口被防火墙拦截,针对防火墙,CentOS使用firewalld的话,放行规则如下:

firewall-cmd --permanent --add-port=873/tcp && firewall-cmd --reload

rsync配置文件在哪?rsync配置文件怎么修改

rsync如何配置开机自启

不同系统的做法略有差异,CentOS 7用systemd管理的话,写入service文件:

systemctl enable rsyncd
systemctl start rsyncd

如果服务托管在docker容器里,进程守护和维护模式是另一套玩法,这里就不展开了。

rsync进阶配置技巧

基本参数掌握后,一些进阶配置能让你的同步方案更稳固。

带宽限制:多任务并发备份时优先级容易乱,用--bwlimit=5000限制最大带宽5000KB/s:

rsync -avz --bwlimit=5000 backup_user@服务器IP::www /backup/

这样不会挤占业务带宽,对线上服务比较友好。

日志切分:rsync自身不带轮转功能,日志一直写会撑爆磁盘,配合系统logrotate,在/etc/logrotate.d/下写一个rsync配置即可。

模块间隔离:多个业务模块用不同系统用户做权限隔离时,替换全局的auth users参数:

[www_private]
path = /var/www/private
auth users = web_sync
secrets file = /etc/rsyncd_web.secrets

如果系统本身有成本控制要求,每多一个模块就对应一份独立的权限边界,国内很多机房对备份流量不额外收费,这是优势,但磁盘空间还是要算清楚。

rsync配置文件相关问题解答

Q:rsync检测配置是否正确的办法是什么?

A:最好的验证方法是修改配置后重启服务,然后从客户端指向对应模块执行一次rsync -avz --list-only,如果担心影响线上服务,可以先使用rsync --daemon --config=/etc/rsyncd.conf --dry-run做语法检查。

Q:rsync排除目录怎么写?

A:两种方式,一是在命令行加--exclude参数,二是用--exclude-from指定文件,文件方式每行写一个目录,作用范围覆盖到当前同步的根路径下所有子目录。

Q:rsync和scp在配置文件侧有哪些不同?

A:scp没有配置文件概念,它属于纯命令操作,rsync的配置文件优势在于可以定义多个模块、独立认证体系、按目录隔离权限,这些scp都不具备,如果只是偶尔传几个小文件,两者差别不大,但要做周期性增量同步,rsync仍是更专业的选择。

相关文章

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

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