阿里云 OSS 如何复制所有文件到另一个 bucket

2020-03-17 10:32发布

问题:

我们使用的阿里云 OSS bucket 中,有一个 bucket 当时创建时选用了低频访问类型,现在想改为标准存储类型,但 OSS 不支持这样的更改,只能在当前区域重新创建 bucket ,然后将低频访问 bucket 中的文件全部复制过来,但是在阿里云 OOS 控制台没有找到 bucket 之间复制文件的功能,请问有什么办法可以解决这个问题?

回答1:

拐了十八弯,通过 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 ,完成。



回答2:

授权新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);



回答3:

看看这个https://developer.aliyun.com/ask/2220?spm=a2c6h.13159741



回答4:

阿里云有复制单个oss对象的API, 复制整个bucket好像还真没有。

最好提工单给阿里,让他们给解决方案。



标签: 阿里云