TB 级数据迁移推荐使用 rsync 配合 `--partial` 参数实现断点续传,适合网络不稳定或需要多次同步的场景。主要风险在于传输过程中源文件发生变化可能导致数据不一致,需在业务低峰期操作。
先说结论:rsync 原生支持断点续传,但必须显式保留部分文件并正确配置校验策略才能确保 TB 级数据完整性。
- 先定位:确认瓶颈是网络带宽、磁盘 I/O 还是 CPU 校验开销。
- 先做:使用 `--partial` `--progress` 进行首次全量,中断后直接重跑同一命令。
- 再验证:迁移完成后使用 `--checksum` 或文件计数比对确保数据一致。
命令速用版
以下命令适用于 Linux 环境,假设源目录为 /data/src,目标服务器为 192.168.1.100,目标目录为 /data/dst。
rsync -avz `--progress` `--partial` `--timeout`=300 /data/src/ user@192.168.1.100:/data/dst/若网络中断,重新执行相同命令即可从断点继续传输,无需额外参数。
为什么会这样
rsync 断点续传的核心机制是保留未传输完成的临时文件并在重传时比对大小。
默认情况下,rsync 在传输中断时会删除目标端未完成的部分文件。添加 `--partial` 参数后,这些部分文件会被保留。当再次运行相同命令时,rsync 会检测到目标端已存在部分文件,仅传输剩余缺失的数据块。`--progress` 用于实时显示传输进度,方便判断是否卡死。TB 级数据迁移耗时较长,网络波动不可避免,保留部分文件能避免重复传输已成功的大文件。
分步处理
步骤 1:环境准备与权限检查
确保目标服务器磁盘空间充足,且 SSH 免密登录已配置,避免传输过程中因密码交互中断。
ssh user@192.168.1.100 "df -h /data/dst"步骤 2:首次全量同步
执行带 `--partial` 的同步命令。若数据量极大,建议先小范围测试命令有效性。
rsync -avz `--progress` `--partial` /data/src/ user@192.168.1.100:/data/dst/步骤 3:中断后续传
若命令因网络错误退出,直接重新运行完全相同的命令。rsync 会自动跳过已完整传输的文件,续传未完成文件。
步骤 4:最终一致性校验
全量传输完成后,执行一次严格校验,确保源端和目标端文件哈希一致。
rsync -avcn `--checksum` /data/src/ user@192.168.1.100:/data/dst/该命令不会传输数据,仅比对校验和,输出差异文件列表。
怎么验证是否生效
通过文件数量、总大小和校验和三项指标验证迁移结果。
1. 文件数量比对
分别在源和目标执行 find 命令统计文件数,数值应一致。
find /data/src -type f | wc -l2. 磁盘占用比对
使用 du 命令检查目录总大小,允许存在少量元数据差异,但数据量级应吻合。
du -sh /data/src /data/dst3. 差异文件检查
使用 rsync dry-run 模式配合 `--checksum`,若无输出则表示完全一致。
rsync -avcn `--checksum` /data/src/ user@192.168.1.100:/data/dst/常见坑
- 慎用 `--delete`:迁移初期不要加 `--delete` 参数,否则源端未同步的文件可能在目标端被误删,建议在最终校验确认无误后再考虑使用。
- 正在写入的文件:若迁移过程中源文件仍在写入,rsync 可能捕获不一致状态。数据库或日志文件建议停止服务后再迁移。
- 软链接处理:默认 -a 参数会保留软链接。若需跟随软链接传输实际文件,需改用 -L 参数,否则目标端可能指向无效路径。
- 权限归属:目标端用户 ID 可能与源端不一致,导致文件归属权变化。需确保目标服务器存在相同 UID/GID 的用户,或使用 `--numeric-ids` 保留数字 ID。
常见问题
rsync 断点续传需要特殊配置吗?
不需要特殊配置,只需添加 `--partial` 参数并确保重跑命令时路径完全一致。
开启压缩 -z 会加快传输速度吗?
取决于网络带宽和 CPU 性能。低带宽高延迟网络通常能提速,千兆内网或 CPU 满载时可能反而变慢。
传输大文件时卡住不动怎么办?
检查 `--timeout` 参数设置,默认超时时间可能过短。增加 `--timeout`=300 可允许更长的无数据响应等待时间。
如何确保迁移过程中数据不被篡改?
迁移完成后必须使用 `--checksum` 参数进行校验,仅靠文件大小和修改时间不足以验证数据完整性。
参考来源
- 来源名:rsync 官方文档
- 页面标题:rsync - fast remote file copy program (like rcp)
- URL:https://rsync.samba.org/