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

删除标记与Object的异同

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

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

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

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

如何删除“删除标记”

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

如果在DELETE操作时未指定删除标记的版本ID,则OSS不会删除“删除标记”,而是插入删除标记作为Object的当前版本。删除标记可以进行累积,如下图所示。enable versioning one
说明 在已开启版本控制的Bucket中,相同的Object可能有多个删除标记,且删除标记将对应唯一的版本ID。
如果在DELETE请求中指定版本ID ,则该指定版本的Object将被永久删除,如下图所示(即删除versionId=333333的删除标记,versionId=222222的版本成为Object的当前版本)。enable versioning

您可以通过Java SDKPython SDKPHP SDKNode.js SDK.NET SDKGo SDKC++ SDK的方式删除指定版本Object及其删除标记。