删除标记

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

删除标记与Object的差异

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

  • 没有关联的数据。

  • 没有关联的访问控制列表(ACL)值。

  • 由于删除标记不包含数据,因此GET请求检索不到任何内容。如果Object的当前版本为删除标记,则对该Object发起GET请求时会返回404错误。

  • 仅具有oss:DeleteObjectVersion权限的RAM用户才能对删除标记执行DELETE操作。

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

说明

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

如何删除“删除标记”

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

如果在DeleteObject请求中未指定删除标记的版本ID,则OSS不会删除“删除标记”,而是插入删除标记作为Object的当前版本。删除标记可以进行累积,如下图所示。enable versioning one

说明

在已开启版本控制的Bucket中,相同的Object可能有多个删除标记,且删除标记将对应唯一的版本ID。

如果在DeleteObject请求中指定版本ID ,则该指定版本的Object将被永久删除,如下图所示(即删除versionId=333333的删除标记,versionId=222222的版本成为Object的当前版本)。enable versioning

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