场景描述:
A服务器 无法访问 B服务器,B服务器 也无法访问 A(即双方都不能通过公网或内网直连对方)
MinIO 官方提供了 mc
(MinIO Client)命令行工具,可以直接实现 Bucket 之间的数据迁移:
安装 mc
在A, B两台机器上安装 mc:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
mv mc /usr/local/bin/
✅ 方案:A 上导出,B 上导入(借助 mc
本地操作 + 中间传输文件)
步骤 1:在 A 服务器导出 Bucket 到本地目录
mc alias set minioserverA http://localhost:9000 <accessKey> <secretKey>
mc mirror minioserverA /saas-demo /tmp/saas-demo/
这会将所有对象从 MinIO A 的 saas-demo
Bucket 复制到 A 服务器本地 /tmp/saas-demo/
目录中。
步骤 2:压缩导出的目录并拷贝到 B 服务器
cd /tmp
tar -czvf saas-demo.tar.gz saas-demo/
scp saas-demo.tar.gz user@B服务器IP:/tmp/
(如果不能用 scp
,可用 U 盘、中转网盘或任何方式)
步骤 3:在 B 服务器解压并导入到 MinIO B
tar -xzvf /tmp/saas-demo.tar.gz -C /tmp/
# 然后用 mc 把本地数据上传到 MinIO B
mc alias set minioserverB http://localhost:9000 <accessKey> <secretKey>
mc mirror /tmp/saas-demo/ minioserverB/saas-demo
⚠️ 注意事项
-
如果 Bucket 数据特别大,建议分批迁移。
-
如果 Bucket 开启了 versioning,
mc mirror
默认只迁移当前版本,历史版本不会同步(需要特别处理)。