中文文档

mc rm

语法

使用 mc rm 命令 removes objects 从 MinIO 部署的桶中删除对象。 要完全删除一个存储桶,请使用 mc rb 命令。

您还可以将 mc rm 命令用于本地文件系统, 以产生类似于命令行工具 rm 的结果。

有关 MinIO 如何对对象执行 DELETE 操作的更多信息,请参阅 minio-object-delete

重要

mc rm 支持在一次命令中删除多个对象或文件。 考虑使用 --dry-run 选项来验证操作 是否只针对所需的对象/文件。

以下命令从 myminio MinIO部署的 mydata 桶 中删除多个对象:

mc rm --recursive myminio/mydata

该命令具有以下语法:

mc [GLOBALFLAGS] rm  \
                 [--bypass]               \
                 [--dangerous]            \
                 [--dry-run]              \
                 [--force]*               \
                 [--incomplete]           \
                 [--newer-than "string"]  \
                 [--non-current]          \
                 [--older-than "string"]  \
                 [--recursive]            \
                 [--rewind "string"]      \
                 [--stdin]                \
                 [--version-id "string"]* \
                 [--versions]             \
                 ALIAS [ALIAS ...]
  • 方括号 [] 表示可选参数。

  • 参数在同一行表示它们是相互依赖的。

  • 使用管道 | 运算符分隔的参数是相互排斥的。

在终端/壳中运行命令之前,将示例复制到文本编辑器中并按需进行修改。

mc rm --force 需要多个参数。 mc rm --version-id 与多个命令选项互斥。 更多信息请参见参考文档。

参数

ALIAS
Required

MinIO部署的 alias 和要删除的对象的 完整路径。 例如:

mc rm play/mybucket/object.txt

您可以指定同一MinIO部署或不同MinIO部署中的多个对象。 例如:

mc rm play/mybucket/object.txt play/mybucket/otherobject.txt

如果指定桶或桶前缀的路径,您 必须 同时指定 --recursive--force 参数。 例如:

mc rm --recursive --force play/mybucket/

mc rm --recursive --force play/mybucket/myprefix/

首先考虑使用 --dry-run 标志 运行命令,以验证递归删除 操作的范围。

要从本地文件系统删除一个文件,请指定该文件的完整 路径:

mc rm ~/data/myoldobject.txt
--bypass
Optional

允许删除在 GOVERNANCE 对象锁定下持有的对象。

--dangerous
Optional

允许在 ALIAS 指定MinIO部署的 根(所有桶)时运行 mc rm 命令。

当与 --versions 标志结合使用时, 此标志指示 mc rmALIAS 目标永久删除 所有对象 及其 版本。

在执行全局删除操作之前,建议先使用 --dry-run 标志运行命令以验证删除操作的范围。

警告

使用 mc rm --dangerous 标志和 --versions 标志运行 ALIAS 命令是不可逆的。 在执行之前,务必尽一切可能确保命令只适用于 您希望删除的`ALIAS`目标。

--dry-run
Optional

输出命令的结果,而实际上不删除任何文件。 使用此标志来测试您的命令配置是否只删除您希望删除的对象。

--force
Optional

允许使用以下任意参数运行 mc rm

--incomplete, I
Optional

删除指定对象的不完整上传。

如果任何 ALIAS 指定了一个桶, 那么 必须 也指定 --recursive--force

--newer-than
Optional

删除指定天数内更新的对象。 指定 #d#hh#mm#ss 格式的字符串。 例如: --newer-than 1d2hh3mm4ss

默认为 0 (所有对象)。

--non-current
Optional

该操作会从指定的 ALIAS 中删除所有 非当前 的对象版本。

此选项对未启用 版本管理 的桶没有影响。

--older-than
Optional

删除指定时间限制之前的对象。用 #d#h#m#s 格式的字符串来指定时间限制。 例如: --older-than 1d2h3m4s

默认为 0 (所有对象)。

--recursive, r
Optional

递归地删除每个 ALIAS 桶或 桶前缀的内容。

如果指定了 --recursive,那么 必须 也指定 --force

对于启用了 版本管理 的桶, 此选项默认会为每个删除的对象产生一个删除标记。 使用 --versions 标志来递归地从桶中 删除所有对象及其版本。

在执行递归删除操作之前,可以首先使用 --dry-run 标志运行命令, 以验证删除操作的范围。

mc rm --version-id 互斥

--rewind
Optional

指令 mc rm 只对在指定时间点存在的 对象版本进行操作。

  • 要回退到过去的特定日期,请将日期指定 为 ISO8601 格式的时间戳。例如: --rewind 2020.03.24T10:00

  • 要回退一段时间,请将持续时间指定为字符串格式, 例如 #d#hh#mm#ss 。例如: --rewind 1d2hh3mm4ss

--rewind 命令要求指定的 ALIAS 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

--stdin
Optional

STDIN 读取对象名称或存储桶。

--versions
Optional

指令 mc rm 对存储桶中所有的对象版本进行 操作。

--versions 命令要求指定的 ALIAS 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

使用 --versions--rewind 一起, 以删除在特定时间点存在的所有对象版本。

--version-id, vid
Optional

指令 mc rm 只对指定的对象版本进行操作。

需要指定的 ALIAS 是一个支持 桶版本控制 的 S3 兼容服务。 对于 MinIO 部署,使用 mc version 命令来启用或禁用桶版本控制。

与以下标志互斥:

全局标记

此命令支持任何 全局标志

示例

删除单个对象

mc rm ALIAS/PATH
  • ALIAS 替换为配置好的 S3 兼容服务的 alias

  • PATH 替换为对象的路径。

递归删除存储桶的内容

使用 mc rm`命令,配合 :mc-cmd:`~mc rm --recursive--force 选项, 以递归方式删除存储桶的内容。

mc rm --recursive --force ALIAS/PATH
  • ALIAS 替换为配置好的 S3 兼容服务的 alias

  • PATH 替换为存储桶的路径。

这个操作不会删除存储桶本身。要删除存储桶以及其中所有的 内容和关联配置,请使用 mc rb 命令。

删除对象的所有不完整上传文件

使用 mc rm--incomplete 选项删除对象的未完成上传文件。

mc rm --incomplete --recursive --force ALIAS/PATH
  • ALIAS 替换为配置好的 S3 兼容服务的 alias

  • PATH 替换为对象的路径。

将对象回滚到以前的版本

使用 mc rm 命令配合 --versions--newer-than 选项可以删除 所有比指定时间 duration 更新的对象版本。 这实际上是将对象 “回滚” 到那个时间点的状态。

重要

删除对象的特定版本是一个 破坏性 操作。您无法 恢复已删除的对象版本。

mc rm ALIAS/PATH --versions --newer-than DURATION
  • ALIAS 替换为配置好的 S3 兼容服务的 alias

  • PATH 替换为对象的路径。 例如, /mybucket/myobject

  • DURATION 替换为从当前 主机时间开始,操作删除对象版本的过去天数。 例如,要删除过去30天内创建的所有对象版本, 请指定 30d

行为

删除存储桶内容

使用 mc rm 命令删除存储桶中的所有内容不会删除存储桶本身。与存储桶关联的任何配置仍然保持不变, 例如 default object lock settings 命令设定的默认对象锁定设置。

要完全删除一个存储桶,应该使用 mc rb 命令,而不是 mc rm 命令。

MinIO 修剪对象删除时的空前缀

mc rm 依赖于 mc 删除 API 来删除对象。 在删除存储桶前缀中的最后一个对象时,mc 还会递归地删除前缀中的每个空部分,直到存储桶根目录。 mc 只对作为对象写入操作一部分 隐式 创建的 前缀应用递归删除 - 也就是说,前缀不是使用如 mc mb 的显式目录创建命令创建的。

例如, 假设有一个名为 photos 的存储桶,其包含以下对象前缀:

  • photos/2021/january/myphoto.jpg

  • photos/2021/february/myotherphoto.jpg

  • photos/NYE21/NewYears.jpg

photos/NYE21 是使用 mc mb 显式创建的*唯一*前缀。 所有其他前缀都是作为写入对象的一部分 隐式 创建的 位于该前缀。

如果一个 mc 命令删除了 myphoto.jpg , 删除 API 会自动删除空的前缀 /january 。 如果后续的 mc 命令删除了 myotherphoto.jpg , 删除 API 会自动删除 /february 前缀 以及 现在为空的 前缀 /2021 。如果一个 mc:mc 命令删除了 NewYears.jpg/NYE21 前缀保持不变,因为它是由 显式 创建的。

如果使用 mc rm 对文件系统进行操作, mc 会通过递归删除空目录路径直到根目录来应用相同的行为。 然而,mc 的删除 API 无法区分显式创建的目录路径 和隐式创建的目录路径。如果 mc rm 删除了 文件系统路径中的最后一个对象,mc 在删除操作 过程中会递归地删除该路径内所有的空目录,直到根目录。

版本化存储桶中的删除操作

MinIO支持在单个桶中保留对象的多个 版本 。在版本化的桶中 删除 对象会产生一个特殊的 删除标记 ,该标记将对象标记为已删除, 同时保留该对象的先前所有版本。

在 mc 版本发生变更: RELEASE.2023-03-20T17-17-53Z

输出显示了版本文件的修改时间。 当与 --dry-run 一起使用时,这可以帮助确认您选择了要删除的正确对象。

S3兼容性

mc 命令行工具是为了与 AWS S3 API 兼容而构建的,并且已经过测试, 以确保在与 MinIO 和 AWS S3 配合使用时,功能和行为符合预期。

MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是 未知的,因此不受支持。尽管 mc 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。

Join Slack 商业支持购买咨询