scp 大文件中断后如何用 rsync –partial 断点续传

10次阅读

rsync断点续传需组合使用–partial、–append-verify和–checksum:–partial保留中断时的临时文件,–append-verify从末尾追加并校验完整性,–checksum确保按内容而非时间戳比对。

scp 大文件中断后如何用 rsync –partial 断点续传

rsync --partial 可以在传输大文件中断后继续传,不用从头开始。关键不是只加 --partial,而是要配合其他选项一起用,否则可能无效或重复传输。

必须加上 --append--append-verify

--partial 本身只是让 rsync 在中断时保留已传的部分(不删临时文件),但它不会自动“接着上次位置继续写”。真正实现断点续传,得靠:

  • --append:服务端文件存在且比本地短,就从末尾追加;适合纯二进制大文件(如镜像、日志),不校验内容一致性
  • --append-verify(推荐):同样追加,但传输完会校验整个文件 MD5/SHA1(默认用 MD5),确保追加后和源完全一致;适合对完整性有要求的场景

避免 rsync 重新全量比对的坑

默认 rsync 会基于文件大小+修改时间判断是否跳过。大文件中断后,目标端文件大小变了、时间也更新了,但内容不全 —— 这时如果不加特定参数,rsync 可能误判为“源文件已改”,触发全量重传。

安全做法是显式告诉 rsync:“别信修改时间,只按内容判断”:

  • 加上 --size-only:只比较文件大小(快,但不够严谨)
  • 更稳妥的是加 --checksum:逐块计算校验和对比(慢一点,但准确,尤其适合断点续传后验证)
  • 实际常用组合:rsync --partial --append-verify --checksum ...

命令示例和注意事项

假设把本地 /data/bigfile.iso 传到远程 user@host:/backup/

rsync -av --partial --append-verify --checksum /data/bigfile.iso user@host:/backup/

  • -a 保持属性,-v 显示过程(可选)
  • 首次运行会全传;中断后再次执行同一命令,rsync 自动检测目标文件存在、较短,就从断点追加
  • 确保目标路径权限可写,且磁盘空间足够(预留至少 1.2 倍文件大小更稳妥)
  • 如果目标文件被手动修改过(比如截断或覆盖),rsync 会拒绝续传并报错,这是保护机制

替代方案:用 --ignore-existing 要小心

有人想用 --ignore-existing 避免覆盖,但这和断点续传无关——它只是跳过目标已存在的文件,不解决“传一半怎么接着”的问题。混用反而容易出错,不建议。

text=ZqhQzanResources