MinIO数据迁移rclone实践

笔者之前采用MinIO官方工具mc进行数据迁移,可能是由于网络波动,经常会出现同步的数据不全、数据部分缺失的情况

1️⃣ 关于 rclone 的可靠性

rclone 本身是一个成熟的开源工具,支持多种存储后端(包括 MinIO/S3 兼容)。它可以:

  • 完整复制文件(支持校验)。

  • 增量同步,只传新文件或修改文件。

  • 支持 断点续传

  • 支持 多平台运行:Linux、Windows、MacOS 均原生支持。

注意事项

  • rclone 默认使用 MD5 或 SHA1 哈希来校验源文件和目标文件,可以确保文件完整性。

  • 对于大文件,rclone 会分块上传,出现中断可以自动续传。

  • 但如果迁移过程中出现系统 crash、网络中断或者误操作,仍可能出现“部分文件未同步”。因此,必须在方案中加入多次校验机制。

2️⃣ 数据迁移可靠方案

前提

  • 旧 MinIO 单节点:source

  • 新 MinIO 集群:target

  • 使用 rclone 访问 S3 API,保证 access_keysecret_key 正确。

  • 假设数据存放在 bucket-name 桶里。


方案步骤

Step 1:配置 rclone

1
2
3
4
5
6
rclone config 
# 创建 source 和 target remote
# type: s3
# provider: MinIO
# access_key_id & secret_access_key
# endpoint: http://old-minio:9000 / http://new-minio:9000

Step 2:全量迁移(第一次)

使用 rclone syncrclone copy

1
rclone sync source:bucket-name target:bucket-name --progress    --checksum   --transfers=8   --checkers=16    --verbose  --retries=10

说明:

  • --checksum:通过 hash 校验文件完整性,而不仅仅是时间戳。

  • --transfers--checkers:并发数量,可根据网络调整。

  • --retries:失败自动重试。

  • sync vs copy

    • copy:不会删除目标桶已有文件。

    • sync:保证源和目标完全一致,目标多余文件会被删除。谨慎使用,生产环境推荐先用 copy 做迁移,再用 sync 做校验。


Step 3:校验完整性

  1. 使用 rclone 的 check 命令:
1
rclone check source:bucket-name target:bucket-name --one-way --size-only
  • --one-way:只检查目标缺失或不一致的文件。

  • --size-only--checksum:建议使用 --checksum 做严格校验。

逻辑

  • 检查结果为空 → 表示所有文件传输完整。

  • 有文件缺失 → 再次使用 rclone copy 补传。


Step 4:增量同步

在初次全量迁移后,旧 MinIO 可能仍在写新文件。此时采用增量同步:

1
rclone copy source:bucket-name target:bucket-name \     --checksum \     --update \     --progress \     --retries=10

说明:

  • --update:只同步源中新或被修改的文件。

  • 可定期(如每小时、每天)执行。

  • 每次增量同步后,再用 rclone check 做完整性校验。


Step 5:最终确认

  1. 全量+增量同步完成后,再次执行:
1
rclone check source:bucket-name target:bucket-name --checksum

确保无差异。
2. 可选:在目标 MinIO 上开启 桶版本控制,以防误删。


Step 6:自动化与日志

  • 在 Linux 上可以用 cron 定时同步增量。

  • 日志建议写到文件:

1
rclone copy ... >> /var/log/rclone_migration.log 2>&1
  • 对重要数据,建议在迁移完成后做一次MD5/SHA256 校验,可用 rclone md5sumsha256sum

3️⃣ 跨平台可行性

rclone 官方支持:

  • Linux:二进制、Snap、包管理器安装。

  • Windows:可执行文件(exe)。

  • MacOS:Homebrew 安装或直接下载二进制。

  • 同一命令行语法一致,无需改动。

所以你的迁移策略可以在三平台通用。


4️⃣ 总结

为了保证“一条数据都不漏,每条都完整”:

  1. 第一次全量迁移rclone sync / rclone copy + --checksum

  2. 校验完整性rclone check(或 md5sum)

  3. 增量同步 → 定期 rclone copy --update --checksum

  4. 最终确认 → 再次 rclone check

  5. 可选:开启版本控制或日志审计

使用 rclone 可以保证数据完整、断点续传、跨平台,只要严格执行“全量→校验→增量→校验”的流程,就可以做到零漏数据。


MinIO数据迁移rclone实践
http://example.com/2025/09/06/MinIO数据迁移rclone实践/
作者
Lingkai Shi
发布于
2025年9月6日
许可协议