拐了十八弯,通过 oss 的跨区域复制
功能解决了。
当前 oss bucket cnblogs-bucket-a
在华东1(杭州)
区域,在 华东2(上海)
创建 oss bucket cnblogs-bucket-b
,在 cnblogs-bucket-a
的 oss 控制台 冗余与容错
-> 跨区域复制
中开启同步,同步到 cnblogs-bucket-b
,历史文件90分钟之后才会启动同步,同步等待时间较长。
cnblogs-bucket-a
-> cnblogs-bucket-b
的同步完成后, 在 cnblogs-bucket-b
的 oss 控制台继续开启同步,同步到华东1(杭州)
区域的最终目标 cnblogs-bucket-c
,完成。
授权新OSS的BucketName的AccessKeyID可以访问操作原先旧的OSS的BucketName,具体如下:
//创建oss客户端
var ossClient = new OssClient(ossConfig.EndPoint, ossConfig.AccessId, ossConfig.Accesskey);
var metadata = new ObjectMetadata { ContentDisposition = "attachment" };
var req = new CopyObjectRequest(ossConfig.BucketName, sourceObject, targetBucket, targetObject)
{
// 如果NewObjectMetadata为null则为COPY模式(即拷贝源文件的元信息),非null则为REPLACE模式(覆盖源文件的元信息)。
NewObjectMetadata = metadata
};
// 拷贝文件。
ossClient.CopyObject(req);
看看这个https://developer.aliyun.com/ask/2220?spm=a2c6h.13159741
阿里云有复制单个oss对象的API, 复制整个bucket好像还真没有。
最好提工单给阿里,让他们给解决方案。