将minio/cos/oss的数据迁移到azure blob storage
安装 MinIO Client (mc) 和 az 和 rclone
- 请确保
mc
rclone
和 az
已安装在你的系统中。如果没有安装,可以使用以下命令进行安装:
- 一般linux系统有一个mc命令,类似于windows的mmc
- 这里的mc是minioclient的客户端
1 2 3 4 5 6 7 8 9 10
| # 安装 MinIO Client wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc sudo mv mc /usr/local/bin/
# 安装rclone sudo -v ; curl https://rclone.org/install.sh | sudo bash
# 安装 az 参照下面文档地址 https://learn.microsoft.com/zh-cn/cli/azure/install-azure-cli
|
配置 MinIO Client mc
使用 mc 是基于用户的 ,不同用户需要都执行一次 mc alias set 命令为你的 MinIO 集群配置一个别名
myminio是别名
1 2 3
| mc alias set myminio http://minio-server:9000 YOUR_ACCESS_KEY YOUR_SECRET_KEY 例如: mc alias set myminio http://192.168.137.100:9000 root root123
|
配置rclone登录minio 和 Azure Blob Storage
使用 rclone是基于用户的,所以在你准备执行的用户的用户目录下
例如azureuser用户
/home/azureuser/.config/rclone/rclone.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| [az] type = azureblob account = admin key = blob key endpoint = https://admin.blob.core.windows.net/ access_tier = Hot [minio] type = s3 provider = Minio access_key_id = root secret_access_key = root123 endpoint = http://192.168.137.100:9000 [tencentcos] type = s3 provider = TencentCOS env_auth = false access_key_id = key_id secret_access_key = access_key endpoint = cos.ap-tokyo.myqcloud.com [aliyunoss] type = s3 provider = Aliyun env_auth = false access_key_id = key_id secret_access_key = access_key endpoint = oss-cn-beijing.aliyuncs.com
|
上述中azure blob下的admin是存储账户名称,admin.blob.core.windows.net是定位到这个存储账户,admin根据不同账户名称不同
tencentcos下endpoint地址要注意,不同区域的地址不同,此处是东京
aliyunoss下endpoint地址要注意,不同区域的地址不同,此处是北京
编写minio迁移脚本
以下是一个完整的 Bash 脚本,用于将 MinIO 集群中的所有 bucket 迁移到 Azure Blob Storage:
migrate_minio_to_azure.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| # 配置 MinIO 和 Azure Blob Storage MINIO_ALIAS="myminio" AZURE_STORAGE_ACCOUNT="admin" AZURE_STORAGE_KEY="blob key"
# 获取所有 MinIO buckets buckets=$(mc ls myminio | awk '{print $5}' | tr -d '\/' ) # 遍历每个 bucket 并迁移到 Azure Blob Storage for bucket in $buckets do echo "正在迁移 bucket: $bucket" # 创建 Azure Blob Storage 容器 az storage container create --name $bucket --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY #使用rclone迁移数据,第一次使用copy,后续使用sync rclone copy --log-level INFO minio:$bucket az:$bucket echo "迁移完成: $bucket" done echo "所有 bucket 迁移完成!"
|
注意事项
确保 MINIO_ALIAS
、AZURE_STORAGE_ACCOUNT
和 AZURE_STORAGE_KEY
替换为你的实际值。
1 2
| chmod +x migrate_minio_to_azure.sh ./migrate_minio_to_azure.sh
|
这样,你就可以完成 MinIO 数据到 Azure Blob Storage 的迁移了。
编写cos迁移脚本
migrate_cos_to_azure.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| AZURE_STORAGE_ACCOUNT="admin" AZURE_STORAGE_KEY="blob key" # 获取所有 MinIO buckets buckets={bucket1name,bucket2name,bucket3name,bucket4name} # 遍历每个 bucket 并迁移到 Azure Blob Storage for bucket in $buckets do echo "正在迁移 bucket: $bucket" # 创建 Azure Blob Storage 容器 az storage container create --name $bucket --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY #使用rclone迁移数据 rclone copy --log-level INFO tencentcos:$bucket az:$bucket echo "迁移完成: $bucket" done echo "所有 bucket 迁移完成!"
|
注意事项
确保 AZURE_STORAGE_ACCOUNT
和 AZURE_STORAGE_KEY
替换为你的实际值。
1 2
| chmod +x migrate_cos_to_azure.sh ./migrate_cos_to_azure.sh
|
这样,你就可以完成 腾讯cos 数据到 Azure Blob Storage 的迁移了。
编写oss迁移脚本
migrate_oss_to_azure.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| AZURE_STORAGE_ACCOUNT="admin" AZURE_STORAGE_KEY="blob key" # 获取所有 MinIO buckets buckets={bucket1name,bucket2name,bucket3name,bucket4name} # 遍历每个 bucket 并迁移到 Azure Blob Storage for bucket in $buckets do echo "正在迁移 bucket: $bucket" # 创建 Azure Blob Storage 容器 az storage container create --name $bucket --account-name $AZURE_STORAGE_ACCOUNT --account-key $AZURE_STORAGE_KEY #使用rclone迁移数据 rclone copy --log-level INFO aliyunoss:$bucket az:$bucket echo "迁移完成: $bucket" done echo "所有 bucket 迁移完成!"
|
注意事项
确保 AZURE_STORAGE_ACCOUNT
和 AZURE_STORAGE_KEY
替换为你的实际值。
1 2
| chmod +x migrate_oss_to_azure.sh ./migrate_cos_to_azure.sh
|
这样,你就可以完成 阿里oss 数据到 Azure Blob Storage 的迁移了。