rsync需显式组合参数才能实现真正续传:必须同时使用--partial与--append-verify(推荐)或--append,并配合--checksum或--size-only及--ignore-times避免误判;还需优化SSH连接与超时设置。

rsync 本身不自动“续传”,必须靠显式参数组合才能在网络中断后真正接着传,而不是重头来。
核心参数必须一起用
--partial 只是让 rsync 中断时不删掉已传的部分,但它不会自己定位断点并追加。要真正续传,得搭配 --append-verify 或 --append:
- --append-verify:推荐用于大文件(如镜像、数据库备份)。它会从目标文件末尾开始追加,并在传输完成后校验整个文件的 MD5,确保内容和源完全一致
- --append:只追加、不校验,适合纯二进制日志类文件,但风险略高
- 单独用 --partial 或 -P(等价于 --partial + --progress)不够——它们保留文件,但不触发追加逻辑
避免误判导致全量重传
默认 rsync 依赖文件大小 + 修改时间判断是否跳过。中断后目标文件大小变了、时间戳也更新了,但内容不全,rsync 可能把它当成“已修改文件”而重传整份。
- 加 --checksum:强制按内容比对(逐块计算校验和),最可靠,适合对完整性要求高的场景
- 或加 --size-only:只比大小,速度快,适合日志等可追加、不需严格校验的文件
- 配合 --ignore-times 更稳妥:彻底禁用时间戳判断,防止干扰
增强 SSH 连接稳定性
断点续传的前提是 rsync 能重新连上,不是卡在 SSH 层就退出了。
- 用 -e "ssh -o ConnectTimeout=15 -o ServerAliveInterval=30":缩短连接等待、维持长连接
- 加 --timeout=600 和 --contimeout=30:分别控制传输超时和连接超时,防卡死
- 避免用 rsync:// 协议:它不走 SSH,缺乏连接恢复能力,断点续传容易失败
实际命令示例
把本地 /data/db.img 推送到远程服务器,支持可靠续传:
rsync -av --partial --append-verify --checksum --timeout=600 --contimeout=30 -e "ssh -o ConnectTimeout=15 -o ServerAliveInterval=30" /data/db.img user@host:/backup/- 首次运行全量传输;中断后再次执行同一命令,rsync 自动检测目标文件存在且较短,直接追加
- 确保目标路径有写权限,磁盘剩余空间 ≥ 文件原始大小 × 1.2(留出校验与缓冲余量)
- 如果目标文件被手动截断或覆盖,rsync 会拒绝续传并报错——这是保护机制,不是故障

















