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

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










