中文文档

@ -0,0 +1,177 @@ .. _minio-object-delete:

Object Deletion

概述

本页总结了 ``DELETE `` 操作如何影响对象,具体取决于包含对象的数据桶的配置.

以下因素的任何组合都可能影响 ``DELETE `` 操作的功能:

权限

MinIO 使用 :ref:` 基于策略的访问控制 <minio-policy>` 系统进行访问管理. 用户或服务账户必须提供正确的策略操作和条件,以允许对桶和对象进行 DELETE .

未被备份的对象

对未启用版本控制的数据桶中的对象执行 DELETE 操作时,操作非常简单. 在验证用户或服务帐户是否有权限执行 DELETE 操作后,MinIO 会永久删除对象.

请求执行删除操作的用户或服务帐户必须拥有针对数据桶和对象的 s3:DeleteObject 操作权限.

版本控制对象

DELETE 当对象被版本控制时,操作的工作方式会有所不同.

用户或服务帐户必须具有针对数据桶和对象的 s3:DeleteObjectVersion 操作权限.

对当前版本进行删除操作

对未指定版本 UUID 的版本控制对象进行 DELETE 操作时,会创建一个 DeleteMarker 作为对象的 head .

在这种情况下,MinIO 实际上不会从磁盘上删除对象或其任何版本. 通过指定版本的 UUID,仍可访问对象的所有现有版本. 当 DeleteMarker 是对象的头部时, MinIO 不会为未指定版本 ID 的 GET 请求提供对象. 相反, MinIO 返回类似 404 的响应.

您可以通过以下方法查找对象版本的 UUID mc ls --versions.

从硬盘中删除对象的当前版本, 查找版本的 UUID, 然后使用 mc rm --version-id=UUID ... 删除当前版本. 在这种情况下, 对于未指定 UUID 的对象的 GET 请求,紧接着的对象版本将成为该对象的当前版本.

警告

在 DELETE 操作中指定 version-id 是不可逆的. MinIO 会从硬盘中删除指定版本,并且 cannot 检索该版本.

删除先前版本的操作

要删除对象的先前版本,请指定版本的 UUID. 您可以通过以下方法获取版本 UUID mc ls --versions. 当 DELETE 请求指定了一个 version-id 且用户拥有删除对象版本的正确权限时,MinIO 会从硬盘中永久删除指定的版本.

警告

在 DELETE 操作中指定 version-id 是不可逆的. MinIO 会从硬盘中删除指定版本,并且 无法 检索该版本.

删除全部版本

使用 mc rm --versions 删除对象的 所有 版本. 这是不可逆转的.

生命周期管理到期

您可以定义一个或多个 lifecycle management expiration rule(s) 使对象在某个版本号计数或某个时间段后失效. 当存在的版本多于规则指定的版本时, 或版本比指定的版本旧时,MinIO 会从硬盘中永久删除对象版本.

这些规则依赖 scanner <minio-concepts-scanner>`来处理桶上的规则. 扫描仪作为优先级较低的连续进程运行,优先执行 ``READ`WRITE 操作. 因为, 符合过期要求的对象版本可能不会立即从 MinIO 中删除.

请参阅 scanner 页面详细了解扫描仪的工作方式和配置选项.

DeleteMarkers 是自己的对象. 生命周期规则可以移除其对象的唯一剩余版本的 DeleteMarkers .

在 MinIO 版本发生变更: RELEASE.2024-05-01T01-11-10Z

使用 JSON 时,生命周期规则可在指定天数后删除已删除对象的所有版本.

保留物件

MinIO 保护受 :ref:` 锁定规则 <minio-object-locking>` 约束的对象不被覆盖或删除. 这些规则要求保留对象,直到规则失效或被删除为止.

DELETE 对没有指定版本的锁定对象进行操作时,会为该对象创建一个 DeleteMarker 标记. 然而, 根据锁的要求保留对象版本本身.

DELETE 指定对象版本的操作必须遵守保留规则. MinIO 保护锁定的对象版本不会被覆盖或删除,直到锁定过期或被移除.

复制对象

复制将对象从一个位置复制到另一个位置. MinIO 支持在桶级别或群集( 站点 )级别进行复制.

删除操作可能复制,也可能不复制, 取决于复制类型和复制的配置方式 .

站点复制

对于已启用 multi-site replication 的群集, MinIO 会将任何群集上执行的所有 delete 操作复制到对等组中的每个其他群集上.

任何单个对等点上的删除行为都遵循与任何 MinIO 部署相同的流程.

桶复制

bucket replication, MinIO 支持来源桶和已配置的远程桶之间复制删除操作. MinIO 同步删除特定对象版本 新的 delete markers. 删除操作复制使用相同的 replication process 与所有其他复制操作一样.

MinIO 要求 明确启用 版本化删除和删除标记复制. 使用 mc replicate add --replicate 字段来指定 delete`delete-marker 或两者,以分别启用版本控制删除和删除标记复制. 要同时启用, 使用逗号分隔符指定两个字符串: delete,delete-marker .

删除标记复制, MinIO 在删除操作创建删除标记后开始复制流程. MinIO 使用 X-Minio-Replication-DeleteMarker-Status 用于跟踪删除标记复制状态的元数据字段. 在 active-active 复制配置, 如果两个群集同时为一个对象创建删除标记,或者如果一个或两个群集在复制事件同步之前宕机,则 MinIO 可能会产生重复的删除标记。

复制删除特定对象版本, MinIO 将对象版本标记为 PENDING ,直到复制完成. 一旦远程目标删除了该对象版本, MinIO 删除源代码上的对象版本. 虽然这一过程可确保近乎同步的版本删除, 可能会导致列表操作在初始删除操作后返回对象版本. MinIO 使用 X-Minio-Replication-Delete-Status 用于跟踪删除版本的复制状态.

MinIO 只复制客户端驱动的显式删除操作. MinIO 不会复制 lifecycle management expiration rules. 对于 active-active 配置, 在 所有 复制桶上设置相同的过期规则,以确保对象过期应用的一致性.

Join Slack 商业支持购买咨询