已安装并可用:直接运行rsync --version成功输出版本号(如rsync version 3.2.7)即确认;若报“command not found”则未安装,需按发行版执行对应安装命令(如apt/yum/dnf等),且远程主机也必须单独验证并安装。

直接运行 rsync --version,能输出版本号(如 rsync version 3.2.7)就说明已装好可用;否则就是没装,得手动补。
怎么确认 rsync 没装?
执行 rsync --version 后如果报 bash: rsync: command not found,不是权限问题,也不是 PATH 错了——是根本没装这个包。别浪费时间查 shell 配置,先装再说。
- 常见翻车:以为 Ubuntu Server 或 CentOS 最小化安装默认带 rsync,实际多数发行版(尤其老镜像或云厂商精简版)根本不预装
- 验证必须用
rsync --version,而不是which rsync或rpm -q rsync——后者可能返回路径但二进制不可执行,--version才是真实可用的硬指标
不同发行版怎么装?别记错命令
装错包管理器会导致失败,或者装上旧版(比如 CentOS 7 默认 rsync 3.0.9 缺 --delete-delay,增量逻辑不稳)。
- Debian / Ubuntu / Linux Mint:
sudo apt update && sudo apt install rsync -y - CentOS 7 / RHEL 7 / Oracle Linux 7:
sudo yum install rsync -y - CentOS 8+ / RHEL 8+ / Fedora / AlmaLinux / Rocky Linux:
sudo dnf install rsync -y - Arch / Manjaro:
sudo pacman -S rsync - Alpine:
sudo apk add rsync
装完立刻再跑一次 rsync --version。低于 3.1 的版本(尤其是 3.0.x)建议升级——生产环境用 --link-dest 或 --filter 时会出兼容问题。
远程同步前,远端也得有 rsync
你本地跑 rsync -avz /data/ user@host:/backup/ 看似只在本机执行,其实会在远端自动调用 rsync --server。远端没装,就会卡住并报:
rsync: command not found rsync error: remote shell returned error (code 127) at io.c(121)
- 解决方法:SSH 登上去,执行
rsync --version;没输出就按上面对应发行版命令装一遍 - 别假设“SSH 能连 = rsync 能用”——这是两个独立依赖
- 远端和本地系统可能不同(比如本地是 Ubuntu,远端是 Rocky Linux),得分别确认
装完别急着同步,先盯住斜杠和路径
装好只是第一步。真正翻车多发生在第一次同步:漏掉路径末尾的 /,导致整个目录被嵌套复制,比如把 /data 同步成 /backup/data/ 而不是 /backup/ 下的内容。
-
rsync -a /data/ user@host:/backup/→ 同步/data/里所有文件到/backup/ -
rsync -a /data user@host:/backup/→ 同步/data这个目录本身,结果是/backup/data/ - 远程路径不存在时,rsync 不会自动创建父目录,得提前
ssh user@host 'mkdir -p /backup/'
硬链接快照(--link-dest)这类高级用法,还要求源和备份目录在同一个文件系统——跨磁盘或 NFS 挂载点会静默失效,但错误不报,只退化为全量复制。











