更新时间:2024-03-04 GMT+08:00

多版本控制

使用场景

利用多版本控制,您可以在一个桶中保留多个版本的对象,使您更方便地检索和还原各个版本,在意外操作或应用程序故障时快速恢复数据。

默认情况下,OBS中新创建的桶不会开启多版本功能,向同一个桶上传同名的对象时,新上传的对象将覆盖原有的对象。

约束与限制

开启了桶级WORM开关,系统将自动开启多版本,并且不允许暂停多版本。

开启多版本控制

  • 桶中已有对象版本ID(空)和内容都不会变化。再次上传该同名对象,对象版本示意图如图1所示。
    图1 多版本对象示意图(已有对象)
  • 新上传对象,OBS自动为每个对象创建唯一的版本号。上传同名的对象将以不同的版本号同时保存在OBS中,如图2所示。
    图2 多版本对象示意图(新对象)
    表1 版本说明

    版本

    描述

    最新版本

    多版本控制开启后,同名对象多次操作,每次操作都会对应一个版本号进行保存。最后一次操作保存的版本号,为最新版本。

    历史版本

    多版本控制开启后,同名对象多次操作,每次操作都会对应一个版本号进行保存。除最后一次外的,其他保存的版本号为历史版本。

  • 列出桶内对象列表时默认列出最新对象列表。
  • 可以指定版本号下载对象,不指定版本号默认下载最新的对象。
  • 可以选中目标对象,并单击右侧的“删除”删除对象。对象被删除后,OBS将插入一个删除标记,对象在“已删除对象”列表中呈现。此时如果访问该对象,会返回404错误。
    图3 删除标记示意图
  • 删除带删除标记的版本可恢复该对象。
  • 在“已删除对象”列表,选中对象,可指定版本号彻底删除指定版本对象。
  • 一个对象只会显示在对象列表或已删除对象列表中,不会同时出现。

    例如,上传一个对象A后,将其删除,对象A将显示在已删除对象列表中。如果再次上传同名对象A,同名对象A会显示在对象列表中,显示在已删除对象列表中的原对象A将不会存在。对象A版本示意图如图4所示。

    图4 删除后再上传同名对象的版本示意图
  • 除带删除标记的版本外,其他每个版本的对象存储在OBS中均需要进行计费。

暂停多版本控制

多版本控制一旦启动,不可以关闭,只能暂停使用。暂停后,新上传的对象版本号为空。如果之前有空版本号的同名对象,则会覆盖该带空版本号的对象。

图5 暂停多版本控制后的对象版本示意图

当不需要对桶内对象进行版本控制时,可以暂停多版本控制:

  • 历史版本将继续保留在OBS中,如果这些历史版本你不再需要,请手动删除。
  • 仍可以指定版本号下载对象,不指定版本号默认下载最新的对象。
  • 除带删除标记的版本外,其他历史版本的对象存储在OBS中仍需要进行计费。

暂停与未启用的区别

暂停多版本控制后,删除对象时,无论此对象是否存在历史版本,将会产生一个版本号为空的删除标记。而未启用多版本控制时,则不会产生删除标记。

多版本开启后,由于对象的每个历史版本都被保存下来,每个版本都会占用存储空间,OBS会对所有版本收取存储费用。请谨慎启用多版本开关,以免产生额外的存储费用。

使用方式

OBS支持通过控制台、API、SDK方式配置多版本控制。

支持的使用方式

参考文档

控制台

配置多版本控制

SDK

OBS支持多种语言SDK,请从SDK概述页面选择进入对应的开发指南查阅。

API

设置桶的多版本状态