minio文件迁移
1、单节点迁移
如果 MinIO 采用单机部署(非分布式),且数据目录结构简单,可直接迁移数据文件:
在 A 机房服务器停止 MinIO 服务
# 找到 MinIO 进程并停止
ps -ef | grep minio
kill -9 <进程ID>
打包数据目录
# 假设数据目录为 /data/minio
tar -zcvf minio_data.tar.gz /mnt/data
传输数据到 B 机房服务器
用 scp
直接传输(适合小数据量)
scp minio_data.tar.gz user@B服务器IP:/tmp/
大数据量建议用 rsync
断点续传
rsync -avz /data/minio user@B服务器IP:/data/
在 B 机房服务器恢复数据
# 解压数据(如果用 tar 打包)
tar -zxvf /tmp/minio_data.tar.gz -C /# 确保目录权限一致
chown -R <运行用户>:/mnt/data
在 B 机房启动 MinIO
用相同的启动参数启动(确保端口、用户名密码一致)
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=password
minio server /mnt/data --console-address ":9001"
2、使用 mc mirror
工具迁移(适用于分布式或网络稳定场景)
MinIO 提供的 mc
客户端工具支持数据镜像同步,适合跨机房网络稳定的情况。
在迁移机器(可在 A 或 B 机房)安装 mc
客户端
# 下载 mc
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
配置 MinIO 源和目标端点
# 配置 A 机房 MinIO(源)
mc alias set minio_A http://A服务器IP:9000 ACCESS_KEY SECRET_KEY# 配置 B 机房 MinIO(目标,需提前部署好)
mc alias set minio_B http://B服务器IP:9000 ACCESS_KEY SECRET_KEY
- 9000:minio api端口
- 请将IP、access_key和secret_key替换为实际值。
同步所有数据
将A机房数据同步到B机房
# 镜像同步所有桶(--remove 表示删除目标端多余文件,保持一致)
mc mirror --remove --watch minio_A/ minio_B/
mc mirror
:将源端(minio_A)的内容镜像同步到目标端(minio_B)--remove
:只在目标端删除源端没有的文件,保持两端一致。--remove
参数只会影响目标端(minio_B),不会对源端(minio_A)做任何删除操作。--watch
:持续监控源端变化并同步(适合增量迁移)- 如需指定单个桶:
mc mirror minio_A/bucket1 minio_B/bucket1
日志如下: