首页 新闻 会员 周边 捐助

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

0
悬赏园豆:50 [已解决问题] 解决于 2020-03-17 11:22

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

dudu的主页 dudu | 高人七级 | 园豆:29568
提问于:2020-03-16 13:24
< >
分享
最佳答案
0

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

dudu | 高人七级 |园豆:29568 | 2020-03-17 11:21
其他回答(3)
0

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

收获园豆:20
LXMZQ | 园豆:224 (菜鸟二级) | 2020-03-16 14:21
0

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

收获园豆:15
风行天下12 | 园豆:3867 (老鸟四级) | 2020-03-16 14:34
0

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

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

收获园豆:15
Timetombs | 园豆:3959 (老鸟四级) | 2020-03-16 15:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册