更新时间:2026-08-28 GMT+08:00
分享

恢复归档存储对象

如果要下载归档存储对象,需要先将归档存储对象恢复。恢复选项分为以下两类,见下表:

选项

说明

OBS iOS SDK对应值

快速恢复

恢复耗时1~5分钟。

OBSRestoreTierExpedited

标准恢复

恢复耗时3~5小时。

OBSRestoreTierStandard

重复恢复归档或深度归档存储数据时,系统将延长恢复有效期。同时,将对恢复操作产生的费用进行重复收取。

您可以通过OBSRestoreObjectRequest恢复归档存储对象。以下代码展示了如何恢复归档存储对象:

#pragma mark - Entry Point
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        static OBSClient *client;
        NSString *endPoint = @"https://your-endpoint";
        // 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量AccessKeyID和SecretAccessKey。
        // 您可以登录访问管理控制台获取访问密钥AK/SK,获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
        char* ak_env = getenv("AccessKeyID");
        char* sk_env = getenv("SecretAccessKey");
        if (ak_env == NULL || sk_env == NULL) {
            NSLog(@"Error: AccessKeyID or SecretAccessKey environment variable not set");
            return 1;
        }
        NSString *AK = [NSString stringWithUTF8String:ak_env];
        NSString *SK = [NSString stringWithUTF8String:sk_env];
        
        // 初始化身份验证
        OBSStaticCredentialProvider *credentialProvider = [[OBSStaticCredentialProvider alloc] initWithAccessKey:AK secretKey:SK];
        
        //初始化服务配置
        OBSServiceConfiguration *conf = [[OBSServiceConfiguration alloc] initWithURLString:endPoint credentialProvider:credentialProvider];
        
        // 初始化client
        client = [[OBSClient alloc] initWithConfiguration:conf];
        
        // 恢复对象
        OBSRestoreObjectRequest *request = [[OBSRestoreObjectRequest alloc]initWithBucketName:@"bucketname" objectKey:@"objectname" storeDays:[NSNumber numberWithInt:30]]; // storeDays: 恢复副本的有效期,取值范围1-30天
        request.restoreTier = OBSRestoreTierExpedited; // restoreTier: 恢复选项,不设置时服务端默认Standard
        
        [client restoreObject:request completionHandler:^(OBSRestoreObjectResponse *response, NSError *error){
            NSLog(@"%@",response);
        }];
        
        // task可用于等待恢复完成
    }
    return 0;
}
    

相关文档