需要将网站的对象存储数据由 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为自己的存储桶信息,运行等待完成即可。只能一个个文件传输,没有多线程,但可以跑满上传带宽,传输速度还是可以的。
发表回复