删除标记(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的当前版本。删除标记可以进行累积,如下图所示。

说明 在已开启版本控制的Bucket中,相同的Object可能有多个删除标记,且删除标记将对应唯一的版本ID。
如果在DELETE请求中指定版本ID ,则该指定版本的Object将被永久删除,如下图所示(即删除versionId=333333的删除标记,versionId=222222的版本成为Object的当前版本)。

您可以通过Java SDK、Python SDK、PHP SDK、Node.js SDK、.NET SDK、Go SDK、C++ SDK的方式删除指定版本Object及其删除标记。