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_key、secret_key正确。假设数据存放在
bucket-name桶里。
方案步骤
Step 1:配置 rclone
1 | |
Step 2:全量迁移(第一次)
使用 rclone sync 或 rclone copy:
1 | |
说明:
--checksum:通过 hash 校验文件完整性,而不仅仅是时间戳。--transfers、--checkers:并发数量,可根据网络调整。--retries:失败自动重试。syncvscopy:copy:不会删除目标桶已有文件。sync:保证源和目标完全一致,目标多余文件会被删除。谨慎使用,生产环境推荐先用copy做迁移,再用sync做校验。
Step 3:校验完整性
- 使用 rclone 的
check命令:
1 | |
--one-way:只检查目标缺失或不一致的文件。--size-only或--checksum:建议使用--checksum做严格校验。
逻辑:
检查结果为空 → 表示所有文件传输完整。
有文件缺失 → 再次使用
rclone copy补传。
Step 4:增量同步
在初次全量迁移后,旧 MinIO 可能仍在写新文件。此时采用增量同步:
1 | |
说明:
--update:只同步源中新或被修改的文件。可定期(如每小时、每天)执行。
每次增量同步后,再用
rclone check做完整性校验。
Step 5:最终确认
- 全量+增量同步完成后,再次执行:
1 | |
确保无差异。
2. 可选:在目标 MinIO 上开启 桶版本控制,以防误删。
Step 6:自动化与日志
在 Linux 上可以用 cron 定时同步增量。
日志建议写到文件:
1 | |
- 对重要数据,建议在迁移完成后做一次MD5/SHA256 校验,可用
rclone md5sum或sha256sum。
3️⃣ 跨平台可行性
rclone 官方支持:
Linux:二进制、Snap、包管理器安装。
Windows:可执行文件(exe)。
MacOS:Homebrew 安装或直接下载二进制。
同一命令行语法一致,无需改动。
所以你的迁移策略可以在三平台通用。
4️⃣ 总结
为了保证“一条数据都不漏,每条都完整”:
第一次全量迁移 →
rclone sync/rclone copy+--checksum校验完整性 →
rclone check(或 md5sum)增量同步 → 定期
rclone copy --update --checksum最终确认 → 再次
rclone check可选:开启版本控制或日志审计
使用 rclone 可以保证数据完整、断点续传、跨平台,只要严格执行“全量→校验→增量→校验”的流程,就可以做到零漏数据。