许多用户在初次接触 rsync 时,容易遇到一个常见问题:直接执行 rsync --version,系统却提示“command not found”。这并非配置错误,而是因为 rsync 并非大多数 Linux 发行版默认安装的同步工具,尤其在采用最小化安装的服务器系统中更为常见。因此,完成安装是使用 rsync 的第一步。

安装过程本身并不复杂,关键在于 选用正确的包管理器。不同 Linux 发行版的安装命令各有差异,记错可能导致安装失败或获取到过时版本。
- Debian / Ubuntu / Linux Mint 系:
sudo apt update && sudo apt install rsync - CentOS 7 / RHEL 7 系:
sudo yum install rsync - CentOS 8+ / RHEL 8+ / Fedora 系:
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 新手最容易踩中的“陷阱”之一:源目录路径末尾是否带有 / 斜杠,会直接导致同步行为出现本质差异。
rsync -a /home/user/docs/ /backup/:此命令会将docs目录 内部的所有文件与子目录 同步到/backup/目录下,而不会在/backup/中额外创建一个名为docs的文件夹。rsync -a /home/user/docs /backup/:此命令则会 将整个docs目录(连同目录本身) 同步至/backup/目录下,最终/backup/内会多出一个docs/子目录。
远程同步的规则完全一致。例如 rsync -a vz /data/ user@host:/backup/ 与 rsync -a vz /data user@host:/backup/,最终在远端主机上形成的目录结构截然不同。若忽视斜杠的有无,很可能导致备份路径出现不必要的嵌套层级,为后续数据恢复增加难度。
SSH 远程同步:必须确认远端也安装了 rsync
通过 SSH 进行远程同步时,有一个容易被忽略的前提条件:目标服务器同样需要安装 rsync。这是因为执行 rsync -e 'ssh -p 2222' /local/ user@host:/remote/ 这类命令时,并非仅在本地运行,实际上它会通过 SSH 在远端主机上自动调用 rsync --server 进程。若远端未安装 rsync,便会看到类似如下报错:
rsync: command not found rsync error: remote shell returned error (code 127) at io.c(121)
解决办法其实很简单,却常常被遗忘:
- 登录目标主机,执行
rsync --version确认 rsync 是否存在。 - 若未安装,则根据该主机的发行版,使用对应命令进行安装(两端系统可能不同)。
- 务必牢记:SSH 连接成功与 rsync 能够正常工作,是两个相互独立的环节。
守护进程模式(rsyncd)与 SSH 模式的认证方式不可混用
rsync 的两种主要远程同步方式,底层机制与认证体系完全不同,混用必然导致错误。
- SSH 模式:这是最常用也最推荐的方式,尤其适合对安全性要求较高或同步规模不大的场景。它直接借助系统用户和 SSH 密钥(或密码)进行认证,无需额外配置 rsync 服务,也不使用 873 端口。
- 守护进程模式(rsyncd):这种方式需要手动配置
/etc/rsyncd.conf文件、定义密码文件(secrets file)并启动rsyncd服务。其连接格式为rsync user@host::module,此处使用的用户名和密码与系统账户无关,需在配置文件中单独设置。
常见错误就是将两种模式的命令格式混淆。例如,在目标机器未启动 rsyncd 服务的情况下,却使用了 ::module 语法;或者反过来。这通常会导致 connection refused 或 @ERROR: invalid module name 等错误。
真正的难点往往不在于命令的书写,而在于初期的模式选择。在部署前,需要明确:是直接利用现有的 SSH 加密通道,还是为了更高性能或集中管理而启用独立的 rsync 守护进程?若基础模式选错,后续的权限设置、日志管理以及防火墙规则都可能需要推倒重来。
