tencent cloud

对象存储

动态与公告
产品动态
产品公告
产品简介
产品概述
功能概览
应用场景
产品优势
基本概念
地域和访问域名
规格与限制
产品计费
计费概述
计费方式
计费项
免费额度
计费示例
查看和下载账单
欠费说明
常见问题
快速入门
控制台快速入门
COSBrowser 快速入门
用户指南
创建请求
存储桶
对象
数据管理
批量处理
全球加速
监控与告警
运维中心
数据处理
内容审核
智能工具箱
数据工作流
应用集成
工具指南
工具概览
环境安装与配置
COSBrowser 工具
COSCLI 工具
COSCMD 工具
COS Migration 工具
FTP Server 工具
Hadoop 工具
COSDistCp 工具
HDFS TO COS 工具
GooseFS-Lite 工具
在线辅助工具
自助诊断工具
实践教程
概览
访问控制与权限管理
性能优化
使用 AWS S3 SDK 访问 COS
数据容灾备份
域名管理实践
图片处理实践
COS 音视频播放器实践
工作流实践
数据直传
内容审核实践
数据安全
数据校验
大数据实践
COS 成本优化解决方案
在第三方应用中使用 COS
迁移指南
本地数据迁移至 COS
第三方云存储数据迁移至 COS
以 URL 作为源地址的数据迁移至 COS
COS 之间数据迁移
Hadoop 文件系统与 COS 之间的数据迁移
数据湖存储
云原生数据湖
元数据加速
数据加速器 GooseFS
数据处理
数据处理概述
图片处理
媒体处理
内容审核
文件处理
文档处理
故障处理
获取 RequestId 操作指引
通过外网上传文件至 COS 缓慢
访问 COS 时返回403错误码
资源访问异常
POST Object 常见异常
API 文档
简介
公共请求头部
公共响应头部
错误码
请求签名
操作列表
Service 接口
Bucket 接口
Object 接口
批量处理接口
数据处理接口
任务与工作流
内容审核接口
云查毒接口
SDK 文档
SDK 概览
准备工作
Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Flutter SDK
Go SDK
iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
React Native SDK
小程序 SDK
错误码
鸿蒙(Harmony) SDK
终端 SDK 质量优化
安全与合规
数据容灾
数据安全
访问管理
常见问题
热门问题
一般性问题
计费计量问题
域名合规问题
存储桶配置问题
域名和 CDN 问题
文件操作问题
日志监控问题
权限管理问题
数据处理问题
数据安全问题
预签名 URL 问题
SDK 类问题
工具类问题
API 类问题
服务协议
Service Level Agreement
隐私政策
数据处理和安全协议
联系我们
词汇表

版本控制概述

PDF
聚焦模式
字号
最后更新时间: 2024-01-06 11:00:17

简介

版本控制用于实现在相同存储桶中存放同一对象的多个版本。例如,在一个存储桶中,您可以存放多个对象键同为 picture.jpg 的对象,但其版本 ID 不同,例如100000、100101和120002等。用户在为某一存储桶开启版本控制功能后,可以根据版本 ID 查询、删除或还原存放在存储桶中的对象。这有助于恢复被用户误删或应用程序故障而丢失的数据。例如,用户在对版本控制的对象进行删除操作时:
如果需要删除对象 (非完全删除),COS 会为被删除的对象插入删除标记,该标记将作为当前对象版本,您可以根据删除标记恢复以前的版本。
如果需要替换对象,对象存储会为新上传的对象插入新的版本 ID,您仍然可以根据版本 ID 恢复被替换前的对象。

版本控制状态

存储桶可处于三种版本控制状态:未启用版本控制状态、启用版本控制状态和暂停版本控制状态。
未启用版本控制状态:指存储桶的默认初始状态,此时版本控制功能关闭。
启用版本控制状态:指开启存储桶版本控制功能,此时为版本控制开启状态,版本控制状态将应用到该存储桶中的所有对象。您对存储桶首次启用版本控制后,新增上传到该存储桶中的对象将拥有唯一的版本 ID。
暂停版本控制状态:指存储桶的版本控制由开启状态变更为暂停状态(无法返回未启用版本控制状态),此后往存储桶中上传的对象将不再存放版本控制的对象。
注意
1. 一旦您对存储桶启用了版本控制,它将无法返回到未启用版本控制状态(初始状态)。但是,您可以对该存储桶暂停版本控制,这样后续新上传的对象将不会产生多个版本。
2. 在启用版本控制之前,存储在存储桶中的对象的版本 ID 均为 null。
3. 启用或暂停版本控制时,会改变对象存储在处理这些对象的请求方式,不会改变对象本身。
4. 只有主账号和授权子账号可以暂停存储桶的版本控制。

管理版本控制状态下的对象

存储桶处于不同的版本控制状态下,您均可对不同状态的存储桶中的对象进行上传、查询和删除操作。除了未启用版本控制状态,启用版本控制状态和暂停版本控制状态下,查询存储桶中的对象和删除对象的操作还包括不指定版本 ID 和指定版本 ID。
未启用版本控制状态下:上传、查询和删除对象等操作方式不变,详情请参见 对象管理 目录下的文档。
启用和暂停版本控制状态下:上传、查询和删除对象等操作方式,与以往方式的差别在于引入了版本 ID。其中执行删除对象操作还有“删除标记”的概念。

管理启用版本控制状态下的对象

启用存储桶版本控制前,已存储在存储桶中的对象,其版本 ID 为 null。启用版本控制后,不会改变存储桶中已有的对象,只会改变 COS 处理已有对象的方式(如请求方式)。此时,新上传的同名对象将以不同的版本存在于同一个存储桶中。以下将介绍在已启用版本控制的存储桶中如何管理对象:
注意
用户在未启用版本控制和启用版本控制的存储桶中上传对象的方式都是相同的,但其版本 ID 不同。通过第二种方式,对象存储会为对象分配特定版本 ID,而前一种方式上传的对象,其版本 ID 始终为 null。

上传对象

对存储桶启用版本控制后,当用户执行 PUT、POST 或 COPY 操作时,COS 会为存放到该存储桶中的对象自动添加唯一的版本 ID。 如下图所示,在启用了版本控制的存储桶中上传对象时,对象存储为该对象添加唯一的版本 ID。


列出版本控制对象

对象存储在与存储桶关联的 versions 参数中存储对象版本信息。COS 按照存储时间的先后顺序返回对象版本,最先返回最近存储的版本。

查询特定对象的所有版本

您可以通过以下过程,使用 versions 参数和 prefix 请求参数查询某对象的所有版本。有关 prefix 的更多信息,请参见 GET Bucket Object versions 文档。 查询某一对象的所有版本,请求示例如下:
GET /?versions&prefix=ObjectKey HTTP/1.1

查询数据元版本

用户使用 GET 请求时无指定版本 ID,将查询对象的当前版本。如下图所示,GET 请求将返回 123.txt 对象的当前版本(最近版本)。

如用户使用 GET 请求时指定其版本 ID,将查询指定版本 ID 的对象。如下图所示,GET versionId 请求查询指定版本(可以是当前版本)的对象。


查询对象版本的元数据

如果您只需查询对象的元数据(而不是其内容),您可以使用 HEAD 操作。默认情况下,您将获得最新版本的元数据。如要查询指定对象版本的元数据,则发送请求时需要指定其版本 ID。 查询指定版本的对象的元数据步骤如下:
将 versionId 配置为被查询对象元数据的版本 ID。
发送指定 versionId 的 HEAD 操作请求。

删除对象

您可以根据需要,随时删除不必要的对象版本。用户在已启用版本控制状态下,使用 DELETE 请求有以下两个场景:
1. 用户未指定版本 ID,执行一般 DELETE 操作。 此操作场景类似于将被删除对象放到了“回收站”,但没有完全移除对象,后续用户如有需要仍然可以恢复数据。 如下图所示,用户在 DELETE 操作时不指定版本 ID,实际上不会删除 Key=123.txt 的对象,而是插入一个新的删除标记,并添加新的版本 ID。

注意
COS 将在存储桶中为被删除对象插入一个拥有新版本 ID 的删除标记,该删除标记将成为被删除对象的当前版本。当您尝试对该删除标记的对象执行 GET 操作时,对象存储会认为该对象不存在,并返回404错误。
2. 用户指定版本 ID,执行操作删除对象版本,此场景可以永久删除版本控制的对象。


还原早期版本

版本控制能够用来还原对象的早期版本,有两种方法可执行该操作:
1. 将对象的早期版本复制到同一存储桶中 复制的对象将成为该对象的当前版本,且所有对象版本都保留。
2. 永久删除对象的当前版本 当您删除当前对象版本时,实际上会将前一个版本转换为该对象的当前版本。

管理暂停版本控制状态下的对象

暂停版本控制时,存储桶中的现有对象不会更改。更改的是对象存储在以后的请求中处理对象的方式。以下将介绍在已暂停版本控制的存储桶中如何管理对象。

上传对象

在存储桶上暂停版本控制后,当用户执行 PUT、POST 或 COPY 操作时,COS 自动将版本 ID 为 null 添加到存放到该存储桶中的对象。如下图所示:

如果存储桶中存在版本控制的对象,则上传到存储桶的对象将成为当前版本,并且版本 ID 为 null。如下图所示:

如果存储桶中已存在空版本,则该空版本将被覆盖,原有的对象内容也会相应被替换,如下图所示:


查询数据元版本

在已暂停版本控制的存储桶上,用户发出 GET Object 请求将返回对象的当前版本。

删除对象

如果暂停了版本控制,执行 DELETE 请求有以下情况:
存储桶中存在空版本的对象,将删除其版本 ID 为 null 的对象。 如下图所示,用户执行一般 DELETE 操作时,COS 会为空版本的对象插入删除标记。

注意
删除标记不存在内容,在删除标记替换空版本时,空版本原先的内容会丢失。
存储桶中没有空版本的对象,存储桶中会新添加一个删除标记。 如下图所示,在存储桶不存在空版本的情况下,用户执行 DELETE 操作不会删除任何内容,对象存储仅插入删除标记。

即使是在已暂停版本控制的存储桶中,主账号也可以永久删除指定版本。 如下图所示,删除指定的对象版本将永久删除该对象。

注意
只有主账号或被主账号授权的账号才可以删除指定的对象版本。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈