版本控制用于管理某一存储空间(Bucket)中相同对象(Object)的不同版本。通过版本控制功能,您可以保存、检索和还原任意版本的Object。本文介绍版本管理中经常遇到的几种场景。

说明 关于版本控制的更多信息,请参见 版本控制介绍

删除历史版本

Bucket开启版本控制功能后,您在覆写或删除Object时,会将Object以历史版本的形式保存,大量冗余的历史版本Object会占用存储空间,产生费用。您可以通过配置历史版本过期规则来自动清理历史版本Object。

通过控制台配置生命周期规则的步骤请参见 设置生命周期规则。例如希望Bucket内所有Object在转为历史版本30天后被自动删除,策略配置如下图所示。 生命周期

恢复历史版本

您可以通过版本控制的恢复历史版本功能,将您因意外操作或应用程序故障删除或覆盖的Object快速恢复。一般有两种方式:
  • (推荐)通过拷贝操作恢复Object的历史版本
    您可以将历史版本拷贝之后存放在当前位置,历史版本会覆盖当前版本成为最新版本,被覆盖的版本会转为历史版本。操作方式如下:
  • 通过删除Object的当前版本来恢复Object的历史版本
    您可以删除当前版本,则下一个历史版本会变为当前版本。操作方式如下:
    警告 这种方式会导致当前版本被删除且无法恢复,请谨慎操作。

管理删除标记

删除已开启版本控制的Bucket中的Object会产生删除标记,大量不清理的删除标记会影响GetBucket操作性能。建议您配置生命周期规则,定期清除删除标记。您可以根据以下情况配置合适的生命周期规则:
  • 通过生命周期规则自动删除Object产生的删除标记
    Bucket开启版本控制之后,如果仅配置针对当前版本的过期删除规则,当Object被自动删除时会以历史版本+删除标记的形式存储在Bucket中。若您不再需要这些文件,建议增加删除历史版本规则删除这部分数据。例如配置如下规则: 过期
    OSS将在每个Object当前版本创建60天之后通过为其添加删除标记来删除它们。此时,Object当前版本变为非当前版本,删除标记变为当前版本。历史版本过期删除操作将在Object变为非当前版本的30天后删除它们。而Object的当前版本(删除标记)会在60天后被删除。
    注意 当Object的所有历史版本都被删除之后,生命周期规则才会自动删除当前版本为删除标记的Object版本。
  • 通过手动删除Object产生的删除标记
    Bucket开启版本控制后,所有手动删除的Object并不会直接删除,而是会成为历史版本,和删除标记一起存储在您的Bucket中。若您不希望这些数据再存在,建议您添加删除历史版本和清理对象删除标记操作,配置示例如下: 删除标记

    当Object的历史版本到期被自动删除之后,清理对象删除标记操作会删除该Object的删除标记。

注意 若您选择手动清除删除标记的话,您需要将Object的历史版本和删除标记一起删除。否则,历史版本的Object会在删除标记被删除后变为当前版本。