OSS 版本控制是什么
对象存储的版本控制开启后,每次覆盖同名对象都会保留为新版本,删除操作只生成一个删除标记,历史数据仍可读取与回滚。把它与生命周期规则、跨区域复制和保留策略(WORM)组合使用,就构成对象层从「防误删」到「防篡改」的完整保护,是云上数据保护体系里最基础的一层。
基本信息
| 适用平台 | 阿里云 OSS(其他厂商对象存储有对应能力) |
|---|---|
| 开关特性 | 开启后不可关闭,只能暂停 |
| 写入行为 | 上传同名对象生成新版本,原数据保留为历史版本 |
| 删除行为 | 删除生成删除标记,当前版本回退到上一版本 |
| 管理方式 | 控制台、ossutil、SDK 与 REST API |
| 计费 | 所有历史版本占用空间照常计费 |
典型使用场景
- 防误覆盖:代码或脚本写错对象后回退到上一个版本
- 防误删:删除只生成删除标记,删除标记移除后数据回来
- 勒索与篡改防护:关键前缀配合保留策略,在规定期限内不可删除
- 合规归档:用不可变保留满足审计与监管要求
- 发布回滚:静态资源批量发布后按版本快速回退
开启与核对
开启与核对
# 查看桶的版本控制状态(ossutil,子命令名以本机 help 为准)
ossutil api get-bucket-versioning --bucket my-bucket
# 开启版本控制:开启后只能暂停,不能关闭
ossutil api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled
# REST API 等价语义
# PUT /?versioning HTTP/1.1 Host: my-bucket.oss-cn-hangzhou.aliyuncs.com
# <VersioningConfiguration><Status>Enabled</Status></VersioningConfiguration>
# 历史版本与删除标记在控制台的对象详情里查看;
# 生命周期规则决定历史版本何时转低频或清理。
ossutil api get-bucket-lifecycle --bucket my-bucket保护能力对照
| 能力 | 作用 | 注意 |
|---|---|---|
| 版本控制 | 覆盖与删除都留痕,可回退历史版本 | 开启后不可关闭,只能暂停 |
| 生命周期 | 按天数转低频、归档或清理历史版本 | 规则写错会提前删掉想保留的版本 |
| 跨区域复制 | 异地副本,应对地域级故障 | 需单独配置并核对复制进度 |
| 保留策略 | WORM:期限内禁止删除或覆盖 | 期限按合规要求评估,误设会阻塞正常发布 |
历史版本持续计费:开启版本控制的同时就要设计生命周期规则,把非当前版本转低频存储或按期清理,否则存储费用会随写入量线性上涨。
暂停版本控制只影响后续新写入的对象,已经产生的历史版本与删除标记不受影响。评估现状时要把「暂停前」和「暂停后」的数据分开看。