删除标记(Delete Marker)是用于受版本控制的对象(Object)的占位符, 即 DELETE 请求中命名的标记符。

删除标记与Object的异同

与其他任何 Object 一样,删除标记同样有文件名称(Key) 和版本 ID,但删除标记在以下方面与其他 Object 不同:

  • 没有关联的数据。
  • 没有关联的访问控制列表(ACL)值。
  • 由于删除标记不包含数据,因此 GET 请求检索不到任何内容。当前版本为删除标记的 Object 时,GET 请求会引发 404 错误。
  • 只能对删除标记执行 DELETE 操作。拥有 DeleteObjectVersion 的权限账号可以删除“删除标记” 。

对已开启版本控制或已暂停版本控制的 Bucket 发送 DeleteObject 请求时,OSS 就会创建删除标记。在 DeleteObject 请求中如果未指定 Object 的 versionId,则不会删除 Object ,而是创建删除标记作为 Object 的当前版本。

说明 无法直接删除已启用版本控制的 Bucket 中的 Object 。但删除标记可以将 Object 视为已删除。

如何删除“删除标记”

以下内容介绍如何在开启版本控制的 Bucket 中删除“删除标记”。

如果在 DELETE 操作时未指定删除标记的版本 ID,则 OSS 不会删除“删除标记”,而是插入删除标记作为 Object 的当前版本。删除标记可以进行累积,如下图所示。删除标记_版本控制_对象/文件(Object)_开发指南_对象存储 OSS 阿里云技术文档 第1张
说明 在已开启版本控制的 Bucket 中,相同的 Object 可能有多个删除标记,且删除标记将对应唯一的版本 ID。
如果在 DELETE 请求中指定 versionId ,则该指定版本的 Object 将被永久删除,如下图所示(即删除 versionId=333333 的删除标记,versionId=222222 的版本成为 Object 的当前版本)。删除标记_版本控制_对象/文件(Object)_开发指南_对象存储 OSS 阿里云技术文档 第2张