rsync 断点续传

大文件传输中断后重头再传代价高:--partial 保留未传完的临时文件,--append-verify 在续传时校验已传部分。

备份与容灾速查数据更新于 2026-10-13

rsync 断点续传是什么

rsync 传输大文件时,如果中断会从头再来,几小时甚至几天的窗口就此浪费。--partial 让 rsync 保留已传完的部分文件,下轮从这里接着传;--append-verify 则在续传前先校验已传部分是否与源端一致,是断点续传里较稳妥的一档。

基本信息

适用平台Linux / macOS / WSL / 各类 Unix,两端都需 rsync
常规选项-a 归档模式(递归 + 保留权限时间)、-A 保留 ACL、-X 保留扩展属性
常用组合-avP 或 -a --partial --progress --partial-dir=.rsync-partial
权限要求保留属主与设备文件需在目标端以 root 运行

典型使用场景

  • 跨机房传输大镜像或备份包:链路不稳,中断后按已传部分续传
  • 首次全量同步超大目录:用 --partial-dir 避免目标端残留半成品文件
  • 定期备份脚本:同一文件未变时 rsync 直接跳过,变化时只传差异块
  • 移动介质搬运:外部硬盘上保留部分传输状态,方便分批完成
  • 带宽受限的异地复制:配合 --bwlimit 控制占用,避免挤占业务链路

大文件续传与常用组合

大文件续传与常用组合
# -P 等于 --partial --progress,中断后保留已传部分
rsync -avP --partial-dir=.rsync-partial /data/big.iso backup@10.0.0.5:/backup/
# 续传前校验已传部分的一致性(较稳妥)
rsync -av --append-verify /data/big.iso backup@10.0.0.5:/backup/
# 限速并保留 ACL 与扩展属性,适合跨机房复制
rsync -aAX --bwlimit=20M --partial-dir=.rsync-partial /data/ backup@10.0.0.5:/backup/data/

续传相关选项读法

选项行为风险提示
--partial保留未传完的临时文件供下轮续传目标端会短暂出现半成品文件,业务读取时可能读到不完整内容
--partial-dir=DIR部分文件收进隐藏目录,传输完成才落到目标路径推荐用法,避免下游程序误读半成品
--append不校验直接追加到目标文件尾部源文件若被修改过,结果静默损坏
--append-verify续传前校验已传部分,不一致则重传更安全,代价是多读一遍目标端数据
续传只对『大文件 + 内容基本不变』的场景有效;对持续写入的日志、数据库文件,续传得到的仍是拼接后的不一致副本,应改用快照或应用级导出。
中断期间源端文件被替换或重写时,已传部分的偏移量不再对应,必须先删除目标端的部分文件再重新开始,否则续传结果错误而不会报错。

易错点

  • 用 --append 对持续变化的文件续传:拼接出损坏文件且全过程无报错,直到恢复失败才暴露
  • 源端文件在中断期间被替换:已传偏移量失效,继续续传等于把两份不同内容拼在一起
  • 未使用 --partial-dir:下游程序在传输中读到半成品文件,误判为备份完成
  • 续传完成后不做校验:传输中断可能已造成截断,恢复前应比对大小与校验值

数据来源与参考

  • rsync 手册(--partial、--append-verify、--partial-dir)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌