开启存储空间(Bucket)版本控制特性后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。通过文件(Object)的版本控制,用户在错误覆盖或者删除 Object 后,能够将 Bucket 中存储的 Object 恢复至任意时刻的历史版本。

说明
  • 如果Bucket已开启版本控制,则不支持设置合规保留策略或镜像回源;如果Bucket已设置合规保留策略或镜像回源,则不支持开启版本控制。
  • 如果Bucket已开启版本控制,上传文件时附加的x-oss-forbid-overwrite请求头将不生效。详情请参见请求头
  • Bucket开启版本控制后,被覆盖或删除的文件都会成为历史版本被保存下来。OSS会计算每个版本的大小,并收取存储费用。请及时删除不再需要的历史版本,以降低您的存储费用。
  • 开启 Bucket 版本控制后,无法返回到非版本化状态,但允许暂停版本控制。

操作方式

您可以通过以下几种方式配置版本控制:

操作方式 说明
控制台 Web 应用程序,直观易用
命令行工具ossutil 命令行工具,性能好
Java SDK 丰富、完整的各类语言 SDK demo
Python SDK
C++ SDK
Go SDK

应用场景

  • 用户数据误删除

    当前 OSS 不提供回收站功能。当用户删除 OSS 数据时,无法找回已删除的数据,必须依赖线下或者第三方的备份产品。

  • 文件被覆盖

    针对网盘、在线协作类产品,该类产品里的文档被频繁的修改。在线办公场景下,针对文件的编辑会产生大量的临时版本,用户经常需要找回某个时间点的版本。

原理介绍

版本控制应用于 Bucket 内的所有 Object。当第一次针对 Bucket 开启版本控制后,该 Bucket 中所有的 Object 将在之后一直受到版本控制,并且每个版本都具有唯一的版本 ID。

  • Bucket 的版本状态包括:
    • 非版本化(默认)
    • 启用版本控制

      对开启了版本控制 Bucket 中 Object 的相关操作,请参见开启版本控制

    • 暂停版本控制

      对暂停了版本控制 Bucket 中 Object 的相关操作,请参见暂停版本控制

  • 可以配置 Bucket 版本控制的用户:
    • 主账号
    • 授权 OSSFullAccess 权限的子账号或者角色
    • 授权 PutBucketVersioning 权限的子账号或者角色