MinioIO迁移

使用 mc (MiniIO Client) 命令行工具

# 配置源和目标MiniIO
mc config host add source http://source-minio:9000 <ACCESS_KEY> <SECRET_KEY>
mc config host add target http://target-minio:9000 <ACCESS_KEY> <SECRET_KEY>

# 迁移数据
mc cp --recursive source/bucket target/bucket

使用rclone工具

# 配置rclone.conf
[source]
type = s3
provider = Minio
access_key_id = <ACCESS_KEY>
secret_access_key = <SECRET_KEY>
endpoint = http://source-minio:9000

[target]
type = s3
provider = Minio
access_key_id = <ACCESS_KEY>
secret_access_key = <SECRET_KEY>
endpoint = http://target-minio:9000

# 执行同步
rclone sync source:bucket target:bucket

使用AWS CLI

bashCopyaws s3 sync \
    --endpoint-url http://source-minio:9000 \
    s3://source-bucket \
    s3://target-bucket \
    --endpoint-url http://target-minio:9000

安装方法

AWS CLI

使用 apt 安装(简单但可能不是最新版本):

bashCopysudo apt update
sudo apt install awscli

rclone

sudo apt update
sudo apt install rclone

工具对比

MinIO 数据迁移工具对比

特性 rclone AWS CLI mc (MinIO Client)
安装复杂度 中等 简单 简单
配置复杂度 中等 简单 简单
断点续传 支持 支持(有限) 不支持
增量同步 支持 支持 支持
带宽限制 支持 不支持 不支持
并发控制 支持 有限支持 有限支持
传输速度 中等 中等
错误恢复 优秀 一般 一般
日志详细度 中等
过滤规则 丰富 基础 基础
常用命令 rclone sync/copy aws s3 sync/cp mc mirror/cp
监控进度 详细 基础 基础
存储服务支持 多种 主要是S3兼容 仅MinIO/S3
内存占用 中等
适用场景 - 大规模迁移
- 定期同步
- 复杂规则
- 需要详细监控
- 简单迁移
- AWS生态
- 基础S3操作
- MinIO日常管理
- 简单迁移
- 基础操作
特殊优势 - 功能最全面
- 性能最好
- 配置灵活
- AWS生态集成
- 命令简单
- 广泛使用
- MinIO原生工具
- 简单直观
- 管理功能全面
主要缺点 - 配置较复杂
- 学习曲线陡
- 功能相对有限
- 不支持带宽限制
- 功能较基础
- 性能一般
推荐场景 - 大规模数据迁移
- 需要精细控制传输过程
- 复杂的同步规则
- 跨多种存储服务传输
- AWS/S3生态系统内使用
- 简单的迁移任务
- 需要脚本自动化
- 团队已熟悉AWS工具
- MinIO日常管理操作
- 简单的数据迁移
- 需要MinIO特定功能
- 轻量级使用场景

实际操作

选用 rclone进行数据迁移

# 运行配置向导
rclone config

按照向导选择下面的内容


# 按照提示输入:
# n) New remote
# name> minio-source  (输入名称)
# Storage> s3        (选择 s3)
# provider> Minio    (选择 Minio)
# env_auth> false    (选择 false)
# access_key_id>     (输入 access key)
# secret_access_key> (输入 secret key)
# endpoint>          (输入 MinIO 地址,如 http://localhost:9000)
# location_constraint> 
# acl>

配置文件

生成配置文件路径

~/.config/rclone/rclone.conf
大概样子这样,可以手动编辑

[prod-60-old]
type = s3
provider = Minio
env_auth = false
access_key_id = xxxxx
secret_access_key = xxxxxx
endpoint = http://xxxxx


[prod-60-new]
type = s3
provider = Minio
access_key_id = xxxx
secret_access_key = xxxx
endpoint = http://xxxx


我的目标是将 prod-60-old数据全部迁移到 prod-60-new

同步全部桶

#!/bin/bash

# 配置
SOURCE="prod-60-old"
DEST="prod-60-new"
LOG_FILE="sync_$(date +%Y%m%d_%H%M%S).log"


# 日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# 开始同步
log "开始全量同步"

# 获取所有桶并检查命令是否成功
bucket_list=$(rclone lsd ${SOURCE}:)
if [ $? -ne 0 ]; then
    log "获取桶列表失败"
    exit 1
fi

# 从输出中提取桶名
echo "$bucket_list" | while read -r line; do
    bucket=$(echo "$line" | awk '{print $5}')
    
    log "开始同步桶: $bucket"
    
    # 修改后的同步命令
    rclone sync \
        ${SOURCE}:${bucket} \
        ${DEST}:${bucket} \
        -P \
        --transfers 8 \
        --checkers 16 \
        --stats 30s \
        --stats-one-line \
        --retries 3 \
        --low-level-retries 10 \
        --timeout 60s \
        --contimeout 60s \
        --buffer-size 64M \
        --max-backlog 10000 \
        --size-only \
        --ignore-times \
        --no-update-modtime \
        2>> "$LOG_FILE"
    
    # 检查同步结果
    if [ $? -eq 0 ]; then
        log "桶 $bucket 同步成功"
    else
        log "警告: 桶 $bucket 同步失败"
    fi
    
    log "------------------------"
done

log "全部同步完成"


慢慢等待吧。。。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容