将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_ALIASAZURE_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 的迁移了。