针对云主机迁移断点续传的需求,核心思路是选择支持断点续传的传输工具或利用云厂商的迁移服务(通常自带断点续传),以下是具体解决方案和操作指南。

1、整机迁移(系统盘+数据盘):推荐使用云厂商官方迁移工具(如阿里云SMC、腾讯云CBS、AWS SMS)或开源P2V/V2V工具(如Clonezilla、DiskGenius)。官方工具一般默认支持断点续传,无需额外配置。
2、文件/数据迁移(非整机):推荐使用rsync(最经典、最可靠)、rclone(支持对象存储)等命令行工具,它们通过增量同步实现断点续传。
3、块设备级别传输(磁盘镜像):推荐使用dd配合netcat,但本身不支持续传,需要结合快照+增量同步或分块传输来实现。
大多数云厂商的迁移工具(如阿里云SMC、腾讯云CBS、华为云CDM)内置文件校验、分块传输、断点重试机制,会记录传输进度。
操作:

1. 在目标端创建迁移任务。
2. 任务中断后,直接重新启动任务,工具会自动对比本地和云端数据,只传输未完成的部分(增量)。
3. 大部分工具在任务控制台有“重试”或“继续”按钮,或支持自动重试(设置重试次数)。
注意:务必确认工具版本支持断点续传,旧版本可能不支持,升级到最新版。
方案二:使用 rsync(通用、可靠,适合Linux/Unix环境)

rsync 通过--partial 或--append 选项支持断点续传,原理:每次中断时,会保留已传输的部分文件,下次只传输未完成的部分。
命令示例(从源主机迁移到目标主机):
在目标主机上执行(从源主机拉取),或反之 rsync -avzP --partial --progress root@源IP:/data/ /data/ 关键参数: -a: 存档模式(保留权限、时间等) -v: 详细输出 -z: 传输时压缩 -P: 等价于 --partial(保留部分传输的文件) + --progress(显示进度) --append: 对于大文件,附加模式(更快,但要求文件未改变) --ignore-existing: 跳过已存在的文件(对于相同文件可直接跳过)
如果传输中断:
- 直接重新运行一模一样的命令,rsync 会自动对比源端和目标端的文件列表,已传输完成的部分不会再传输,只传输缺失或变化的部分。
大文件:使用--append-verify 或--partial-dir=DIR 来保存临时块。
方案三:使用 rclone(适合对象存储、云盘)
rclone 是目前最强大的云同步工具,支持几乎所有对象存储,且默认支持断点续传(分块上传)。
命令示例(从本地到腾讯云COS):
先配置好 rclone remote rclone copy /data/ remote:bucket/path/ -P --ignore-existing -P: 显示进度 --ignore-existing: 跳过已存在文件(适合首次) 如果中断,重新运行该命令即可,rclone 会自动检查云端已存在哪些部分。
对于大文件:rclone 默认分块,中断后重试会自动跳过已上传的块。
方案四:基于快照的增量迁移(适合VMware/KVM等虚拟化)
通过快照+增量同步实现断点续传。
1、创建全量快照(源VM)。
2、全量传输:挂载快照,使用 dd 或 qemu-img 把快照文件传输到目标端。
3、记录增量:如果传输中断,删除当前快照,创建一个新的增量快照。
4、增量同步:使用qemu-img convert 的-b 参数(base image)或者rsync --link-dest 方式,只传输变化的数据块。
5、合并:最终在目标端合并基础镜像 + 增量镜像。
更简单的替代方案:直接使用qemu-img 的convert 或dd +netcat,但需注意:
dd不支持断点续传,如果中断,必须从头开始。
- 可以用curl 的--resume 参数配合 HTTP 服务器,但复杂。
如果发现续传失败(比如重新开始全量传输),请检查以下原因:
1、源端数据发生变化:如果迁移过程中源端磁盘被持续写入(如数据库),rsync的--ignore-existing 或--append 会失效,可能导致文件校验不通过,从而触发全量重传。建议先暂停源端写操作、或使用快照/只读挂载。
2、文件权限/元数据冲突:目标端已有同路径文件但权限不同,rsync可能判定文件不同而重传。
3、传输工具版本过低:某些旧版 rsync 的--partial 在某些场景下不稳定。
4、网络超时/断开导致临时文件损坏:目标端的.rsync-partial 文件可能不完整,可删除后重新启动。
5、块设备迁移(dd):除非用dd +split +curl --resume 手动分块,否则dd自身无续传能力。
| 场景 | 推荐工具 | 续传支持 | 备注 |
| 整机V2V迁移(公有云) | 云厂商官方工具(SMC、CBS迁移) | ✅ 内置 | 最推荐,无需代码 |
| Linux文件/目录迁移 | rsync | ✅ 非常成熟 | 用--partial/--append 即可 |
| 对象存储迁移 | rclone | ✅ 分块续传 | 适合桶间、本地到对象存储 |
| VMware/虚拟化整机 | 快照+增量同步 或qemu-img 的镜像链 | ✅ 需要手动规划 | 复杂但可控 |
| 纯块设备(dd) | 不推荐直接dd | ❌ 不支持 | 建议改为文件级 rsync 或云厂商工具 |
如果传输已经中断,现在的操作办法:
1、停止所有写操作(对源端)。
2、检查目标端是否有临时文件(如.rsync-partial 或部分片段)。删除它们(避免旧文件导致校验错误)。
3、重新运行迁移命令,确保使用--partial 或--append 参数。
4、观察日志,看是否每次重跑只传输少量数据(几十MB),说明续传生效,如果还是跑全量(几百GB),检查配置问题。
如果问题依旧,可以考虑将大文件分块传输(如split),然后逐块传,块状态记录在脚本中(高级用法但非必须)。
文章摘自:https://idc.huochengrm.cn/zj/26643.html
评论
脱南琴
回复云主机迁移中断点续传失败,可检查网络、带宽,重试或联系服务商解决。
登康震
回复云主机迁移中断点续传失败时,首先检查网络连接,确认数据完整性,然后尝试重新启动迁移任务或联系技术支持进行专业诊断和修复。