删除标记(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 的当前版本。删除标记可以进行累积,如下图所示。enable versioning one
说明 在已开启版本控制的 Bucket 中,相同的 Object 可能有多个删除标记,且删除标记将对应唯一的版本 ID。
如果在 DELETE 请求中指定 versionId ,则该指定版本的 Object 将被永久删除,如下图所示(即删除 versionId=333333 的删除标记,versionId=222222 的版本成为 Object 的当前版本)。enable versioning