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 | 续传前校验已传部分,不一致则重传 | 更安全,代价是多读一遍目标端数据 |
续传只对『大文件 + 内容基本不变』的场景有效;对持续写入的日志、数据库文件,续传得到的仍是拼接后的不一致副本,应改用快照或应用级导出。
中断期间源端文件被替换或重写时,已传部分的偏移量不再对应,必须先删除目标端的部分文件再重新开始,否则续传结果错误而不会报错。