rsync断点续传必须组合使用--partial、--append-verify和--checksum三个参数:--partial保留中断文件,--append-verify实现末尾追加并全量校验,--checksum强制内容比对避免时间戳误判。

Linux 中用 rsync 断点续传大容量文件,关键不是“重试”,而是让 rsync 明确知道:目标文件已传了一部分,现在要接着写、还要校验对不对。默认行为不满足这个要求,必须加特定参数组合才能真正生效。
必须带的三个核心参数
单独用 -P(即 --partial --progress)只能保留中断时的临时文件,但不会自动追加;要真正续传,还得补上:
- --append-verify:检测目标文件存在且比源文件短,就从末尾追加,并在传输完成后校验整个文件(默认用 MD5),确保和源完全一致
- --checksum:强制按内容比对,避免因中断导致目标文件 mtime 更新、大小变化后被误判为“已修改”,从而触发全量重传
推荐基础命令格式:
rsync -av --partial --append-verify --checksum /local/bigfile user@host:/remote/
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
为什么不能只靠 --partial 或 -P
常见误区是以为加了 -P 就万事大吉。实际上:
- 目标端若已有同名文件(哪怕只是中断残留),rsync 默认会按“大小+时间戳”判断——中断后文件大小变了、时间也更新了,但内容不全,rsync 可能直接跳过或全量重传
- --partial 只负责不删临时文件,不负责“从哪接着写”;没 --append-verify,它不会主动追加
- 不用 --checksum,校验逻辑仍依赖时间戳,断点场景下极易失效
远程同步时的实用细节
走 SSH 是最简方案,无需额外配 rsync daemon:
- 推过去:rsync -av --partial --append-verify --checksum /data/archive.tgz user@192.168.1.100:/backup/
- 拉回来:rsync -av --partial --append-verify --checksum user@192.168.1.100:/backup/archive.tgz ./
- 确保目标路径可写,且磁盘剩余空间 ≥ 源文件大小 × 1.2(预留校验与临时空间)
- 如果目标文件被手动截断或覆盖过,rsync 会拒绝续传并报错,这是保护机制,不是故障
自动化补救(网络极不稳定时)
若频繁中断,可配合脚本做简单兜底:
- 用 ssh-copy-id 配好免密登录
- 写个检查脚本,每分钟读取 rsync 日志里是否有 error,有则杀掉旧进程、重启带全参数的 rsync 命令
- 注意:这不是 rsync 自身能力,而是运维层面的容错补充,日常稳定网络中无需此步










