CloudFlare R2 迁移至 BackBlaze B2 脚本

需要将网站的对象存储数据由 CloudFlare R2 迁移至 BackBlaze B2,网上的正常方法是使用 rclone 进行传输,但发现使用 AWS SDK for Python (Boto3) 好像更为简单快捷。

import boto3

cloudflare_r2 = boto3.client(
    's3',
    aws_access_key_id='CLOUDFLARE_ACCESS_KEY',
    aws_secret_access_key='CLOUDFLARE_SECRET_KEY',
    endpoint_url='https://s3.r2.cloudflare.com'
)

backblaze = boto3.client(
    's3',
    aws_access_key_id='BACKBLAZE_ACCESS_KEY',
    aws_secret_access_key='BACKBLAZE_SECRET_KEY',
    endpoint_url='https://s3.us-west-002.backblazeb2.com'
)

def migrate_data():
    cloudflare_files = cloudflare_r2.list_objects(
        Bucket='my-cloudflare-r2-bucket'
    )

    for item in cloudflare_files.get('Contents', []):
        key = item['Key']
        obj = cloudflare_r2.get_object(Bucket='my-cloudflare-r2-bucket', Key=key)
        body = obj['Body'].read()
        backblaze.put_object(Bucket='my-backblaze-bucket', Key=key, Body=body)

migrate_data()

修改上述 python 代码中的aws_access_key_id、aws_secret_access_key和endpoint_url为自己的存储桶信息,运行等待完成即可。只能一个个文件传输,没有多线程,但可以跑满上传带宽,传输速度还是可以的。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注