rsync非开箱即用,需按发行版选择对应命令安装:Debian/Ubuntu用sudo apt install rsync,CentOS 7/RHEL 7用sudo yum install rsync,CentOS 8+/RHEL 8+/Fedora用sudo dnf install rsync,Arch系用sudo pacman -S rsync,装后须运行rsync --version验证。

rsync 不是开箱即用的“默认工具”,绝大多数 Linux 发行版(包括最小化安装的 CentOS、Ubuntu Server)都不预装它。直接运行 rsync --version 报 “command not found” 是常态,不是配置错误。
不同发行版怎么装 rsync?别记错包管理器
装错命令会导致失败或装到旧版本。关键看你的系统类型,不是看“Linux”三个字:
- Debian / Ubuntu / Linux Mint:
sudo apt update && sudo apt install rsync - CentOS 7 / RHEL 7 / Oracle Linux 7:
sudo yum install rsync - CentOS 8+ / RHEL 8+ / Fedora / AlmaLinux / Rocky Linux:
sudo dnf install rsync - Arch Linux / Manjaro:
sudo pacman -S rsync
装完立刻验证:rsync --version。输出应类似 rsync version 3.2.7。低于 3.1 的版本(如 CentOS 7 默认的 3.0.9)不支持 --delete-delay、--filter 等关键参数,生产环境建议升级。
本地同步和远程同步,路径末尾斜杠影响结果
这是最常踩的坑:源路径结尾有没有 /,决定你是“同步目录内容”还是“同步目录本身”。
-
rsync -a /home/user/docs/ /backup/→ 把docs里所有文件复制进/backup/(不创建docs子目录) -
rsync -a /home/user/docs /backup/→ 把整个docs目录(含名字)复制成/backup/docs/
远程同步同理:rsync -avz /data/ user@host:/backup/ 和 rsync -avz /data user@host:/backup/ 的目标结构完全不同。漏掉斜杠,可能多出一层嵌套,导致备份路径错位、恢复失败。
SSH 远程同步必须确认远端也装了 rsync
rsync -e 'ssh -p 2222' /local/ user@host:/remote/ 看似只在本地执行,其实会在远端自动调用 rsync --server。如果远端没装 rsync,会报错:
rsync: command not found rsync error: remote shell returned error (code 127) at io.c(121)
解决方法很简单,但常被忽略:
- 登录远端主机,运行
rsync --version - 没装就按上面对应发行版命令装一遍(注意远端可能是另一套系统)
- 不要依赖“SSH 能连上就代表能同步”——这是两个独立环节
守护进程模式(rsyncd)和 SSH 模式不能混用认证方式
两种常用远程方式本质不同:
-
SSH 模式(推荐用于小规模、安全性优先场景):走系统用户 + SSH 密钥或密码,不需要额外配
rsyncd.conf,也不监听 873 端口 -
守护进程模式(
rsyncd):需手动配置/etc/rsyncd.conf、secrets file、启动rsyncd服务;连接格式为rsync user@host::module,用的是自定义用户名密码,和系统账户无关
常见错误:把 SSH 模式命令写成 rsync user@host::module,或反过来,在没启 rsyncd 的机器上硬配 :: 地址。报错通常是 connection refused 或 @ERROR: invalid module name,根源是协议不匹配。
真正难调试的点不在命令本身,而在于你默认以为“远程同步=一种方式通吃”。实际部署前,先明确:要走 SSH 加密通道,还是用轻量级守护进程做集中分发——选错模式,后续权限、日志、防火墙规则全得重来。


















