存储空间(Bucket)开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。当Bucket累积了大量的历史版本或者过期删除标记时,您可以结合生命规则删除不必要的历史版本以及过期删除标记,从而减少存储成本并有效提升列举Object的性能。

前提条件

目标Bucket已开启版本控制。详情请参见开启版本控制

场景说明

当目标存储空间examplebucket开启版本控制后,王先生在某一年2月8日上传了名为example.txt的文件,此后在同一年份的不同时间内对example.txt文件进行了多次覆盖或不指定versionID的删除操作,OSS对该文件的每一次覆盖和删除操作均生成全局唯一的随机字符串versionID(图示中的versionID均以简易版本号标识,不代表实际versionID),并将文件以历史版本的形式保存在目标Bucket中。versioning

文件经多次覆盖和不指定versionID的删除操作后,结合业务场景的变化,王先生需实现如下需求:

  • 仅保留5月8日以及9月10日上传的文件版本。
  • 将5月8日生成的最新历史版本文件恢复为当前版本。

注意事项

使用生命周期过期策略管理不同版本Object时,有如下注意事项:

  • 当前版本Object过期策略
    • 在开启版本控制的情况下,如果生命周期规则中的过期策略作用于当前版本Object,OSS会添加删除标记将当前版本Object作为历史版本Object保留,而不是删除当前版本Object,且删除标记将成为Object的当前版本。
    • 在暂停版本控制的情况下,如果生命周期规则中的过期策略作用于当前版本Object,OSS会添加删除标记作为当前版本,且versionID为null。由于OSS保证同一个Object只会有一个versionID为null的版本,因此原versionID为null的版本将被覆盖。
  • 历史版本Object过期策略

    在开启或暂停版本控制的情况下,如果生命周期规则中的过期策略作用于历史版本Object,OSS会永久删除历史版本Object,且无法恢复永久删除的历史版本Object。

有关生命周期规则的更多信息,请参见生命周期规则介绍

操作步骤

  1. 保留指定版本文件

    通过配置生命周期规则实现仅保留5月8日以及9月10日上传的文件版本的操作步骤如下:

    1. 登录OSS管理控制台
    2. 单击Bucket列表,然后单击examplebucket。
    3. 单击基础设置 > 生命周期,在生命周期区域单击设置
    4. 单击创建规则,按如下说明配置生命周期规则。lifecycle
      区域 配置项 配置方法
      基础设置 状态 选择启动
      策略 选择配置到整个Bucket
      当前版本 文件过期策略 选择清理对象删除标记
      历史版本 文件过期策略 选择过期天数
      删除文件 设置为90天,Object会在其被转换为历史版本的90天后过期,并在过期的第二天被删除。
      清理碎片 碎片过期策略 选择过期天数
      删除碎片 设置为90天,因分片上传产生的碎片90天后过期,并在过期的第二天被删除。
    5. 单击确定
  2. 恢复指定版本文件

    将5月8日生成的最新历史版本文件恢复为当前版本的操作步骤如下:

    1. 在examplebucket管理页面,单击文件管理
    2. 找到更新时间为5月8日对应版本的example.txt文件。
    3. 单击目标历史版本右侧的恢复