开发者社区> 问答> 正文

OSS如何使用归档存储类型?

OSS提供三种 存储类型,本文介绍归档存储类型(Archive)的存储空间的创建与使用。

创建归档存储类型的存储空间


您可以通过控制台、API/SDK和命令行工具创建归档存储类型的存储空间。

通过控制台创建


控制台创建Archive类型的bucket,[backcolor=transparent]存储类型选择[backcolor=transparent]归档存储,如下图所示。

通过API/SDK创建


以Java SDK为例:

  1. [backcolor=transparent]OSSClient[backcolor=transparent] ossClient [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]OSSClient[backcolor=transparent]([backcolor=transparent]endpoint[backcolor=transparent],[backcolor=transparent] accessKeyId[backcolor=transparent],[backcolor=transparent] accessKeySecret[backcolor=transparent]);
  2. [backcolor=transparent]CreateBucketRequest[backcolor=transparent] createBucketRequest[backcolor=transparent]=[backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]CreateBucketRequest[backcolor=transparent]([backcolor=transparent]bucketName[backcolor=transparent]);
  3. [backcolor=transparent]// 设置bucket权限为公共读,默认是私有读写 createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
  4. [backcolor=transparent]// 设置bucket存储类型为归档类型,默认是标准类型
  5. [backcolor=transparent]createBucketRequest[backcolor=transparent].[backcolor=transparent]setStorageClass[backcolor=transparent]([backcolor=transparent]StorageClass[backcolor=transparent].[backcolor=transparent]Archive[backcolor=transparent]);
  6. [backcolor=transparent]ossClient[backcolor=transparent].[backcolor=transparent]createBucket[backcolor=transparent]([backcolor=transparent]createBucketRequest[backcolor=transparent]);

createBucketRequest.setStorageClass(StorageClass.Archive);即设置创建的bucket的存储类型为归档存储类型。

通过OSS命令行工具创建


以OSSUtil为例:
  1. [backcolor=transparent] [backcolor=transparent]./[backcolor=transparent]ossutil mb oss[backcolor=transparent]:[backcolor=transparent]//[bucket name] --storage-class=Archive

[bucket name]为需要创建的bucket名称。指定--storage-class的参数为Archive,用来创建归档存储类型的bucket。

使用归档存储类型



上传数据


归档存储类型bucket支持PUT Object/Multipart两种上传方式,不支持APPEND追加写入。
基于PUT Object/Multipart开发的上传应用可以直接使用归档存储类型。

下载数据


归档存储类型数据读取与标准存储类型和低频访问类型的方式有一些区别。所有存储的归档类型数据在读取前需要先执行restore操作解冻到可读取状态,解冻过程需要1分钟时间。
归档文件的状态变换过程如下:
  1. 归档类型的文件初始时处于冷冻状态。
  2. 提交解冻(restore)操作后,服务端执行解冻,文件处于解冻中状态。
  3. 完成解冻后,可以读取文件。
  4. 解冻状态默认持续1天,最多延长7天,之后文件又回到冷冻状态。


使用控制台解冻



对需要读取的文件,执行解冻操作,解冻过程预计花费1分钟。期间可以查询到object处于解冻中状态。

使用API/SDK解冻


以Java SDK举例, 调用restoreObject方法进行object解冻:
  1. [backcolor=transparent]ObjectMetadata[backcolor=transparent] objectMetadata [backcolor=transparent]=[backcolor=transparent] ossClient[backcolor=transparent].[backcolor=transparent]getObjectMetadata[backcolor=transparent]([backcolor=transparent]bucketName[backcolor=transparent],[backcolor=transparent] key[backcolor=transparent]);
  2. [backcolor=transparent]// check whether the object is archive class
  3. [backcolor=transparent]StorageClass[backcolor=transparent] storageClass [backcolor=transparent]=[backcolor=transparent] objectMetadata[backcolor=transparent].[backcolor=transparent]getObjectStorageClass[backcolor=transparent]();
  4. [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]storageClass [backcolor=transparent]==[backcolor=transparent] [backcolor=transparent]StorageClass[backcolor=transparent].[backcolor=transparent]Archive[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  5. [backcolor=transparent]    [backcolor=transparent]// restore object
  6. [backcolor=transparent]    ossClient[backcolor=transparent].[backcolor=transparent]restoreObject[backcolor=transparent]([backcolor=transparent]bucketName[backcolor=transparent],[backcolor=transparent] key[backcolor=transparent]);
  7. [backcolor=transparent]    [backcolor=transparent]// wait for restore completed
  8. [backcolor=transparent]    [backcolor=transparent]do[backcolor=transparent] [backcolor=transparent]{
  9. [backcolor=transparent]        [backcolor=transparent]Thread[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]1000[backcolor=transparent]);
  10. [backcolor=transparent]        objectMetadata [backcolor=transparent]=[backcolor=transparent] ossClient[backcolor=transparent].[backcolor=transparent]getObjectMetadata[backcolor=transparent]([backcolor=transparent]bucketName[backcolor=transparent],[backcolor=transparent] key[backcolor=transparent]);
  11. [backcolor=transparent]    [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]while[backcolor=transparent] [backcolor=transparent](![backcolor=transparent]objectMetadata[backcolor=transparent].[backcolor=transparent]isRestoreCompleted[backcolor=transparent]());
  12. [backcolor=transparent]}
  13. [backcolor=transparent]// get restored object
  14. [backcolor=transparent]OSSObject[backcolor=transparent] ossObject [backcolor=transparent]=[backcolor=transparent] ossClient[backcolor=transparent].[backcolor=transparent]getObject[backcolor=transparent]([backcolor=transparent]bucketName[backcolor=transparent],[backcolor=transparent] key[backcolor=transparent]);
  15. [backcolor=transparent]ossObject[backcolor=transparent].[backcolor=transparent]getObjectContent[backcolor=transparent]().[backcolor=transparent]close[backcolor=transparent]();


使用OSS命令行工具解冻


以OSSUtil为例:
  1. [backcolor=transparent] [backcolor=transparent]./[backcolor=transparent]ossutil restore oss[backcolor=transparent]:[backcolor=transparent]//[Bucket name]/[Object name]

[Bucket name]和[Object name]为需要做解冻操作的bucket和object名称。

展开
收起
青衫无名 2017-10-17 15:09:05 6041 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
OSS运维进阶实战手册 立即下载
《OSS运维基础实战手册》 立即下载
OSS运维基础实战手册 立即下载