文档

mc rm

语法

The mc rm 命令 删除对象 来自 MinIO 部署上的存储桶。要完全删除存储桶,请改用 mc rb

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

有关 MinIO 如何对对象执行 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 ...]
  • 方括号 [] 表示可选参数。

  • 同一行上的参数是相互依赖的。

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

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

mc rm --force 是多个参数所需的。 mc rm --version-id 与多个参数互斥。有关更多信息,请参阅参考文档。

参数

ALIAS
必需

MinIO 部署的 别名 以及要删除的对象的完整路径。例如:

mc rm play/mybucket/object.txt

您可以在相同或不同的 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
可选

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

--dangerous
可选

允许在 ALIAS 指定 MinIO 部署上的根目录(所有存储桶)时运行 mc rm

--versions 结合使用时,此标志指示 mc rm 永久删除 ALIAS 目标上的所有对象*和*版本。

请考虑首先使用 --dry-run 运行该命令以验证站点范围删除操作的范围。

警告

使用 --versions 标记运行 mc rm --dangerous 是不可逆的。在执行之前,请尽一切努力确保该命令仅适用于所需的 ALIAS 目标。

--dry-run
可选

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

--force
可选

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

--incomplete, I
可选

删除指定对象的未完成上传。

如果任何 ALIAS 指定存储桶,则**必须**还指定 --recursive--force

--newer-than
可选

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

默认为 0(所有对象)。

--non-current
可选

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

此选项对未启用 版本控制 的存储桶无效。

--older-than
可选

删除比指定时间限制更旧的对象。以 #d#hh#mm#ss 格式指定字符串。例如:--older-than 1d2hh3mm4ss

默认为 0(所有对象)。

--recursive, r
可选

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

如果指定 --recursive,则**必须**还指定 --force

对于启用了 版本控制 的存储桶,此选项默认情况下会为每个删除的对象生成一个删除标记。包含 --versions 标记以递归删除存储桶中的所有对象*和*对象版本。

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

mc rm --version-id 互斥。

--rewind
可选

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

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

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

--rewind 要求指定的 ALIAS 是支持 存储桶版本控制 的与 S3 兼容的服务。对于 MinIO 部署,请使用 mc version 启用或禁用存储桶版本控制。

--stdin
可选

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

--versions
可选

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

--versions 要求指定的 ALIAS 是支持 存储桶版本控制 的与 S3 兼容的服务。对于 MinIO 部署,请使用 mc version 启用或禁用存储桶版本控制。

--versions--rewind 结合使用以删除在特定时间点存在的全部对象版本。

--version-id, vid
可选

指示 mc rm 仅对指定的对象版本进行操作。

--version-id 要求指定的 ALIAS 必须是支持 Bucket 版本控制 的 S3 兼容服务。对于 MinIO 部署,请使用 mc version 来启用或禁用 Bucket 版本控制。

与以下任何标志互斥

全局标志

此命令支持任何 全局标志

示例

移除单个对象

mc rm ALIAS/PATH
  • ALIAS 替换为已配置的 S3 兼容服务的 别名

  • PATH 替换为对象的路径。

递归移除 Bucket 内容

使用 mc rm 以及 --recursive--force 选项来递归移除 Bucket 的内容。

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

  • PATH 替换为 Bucket 的路径。

此操作**不会**移除 Bucket 本身。请使用 mc rb 来移除 Bucket 及其所有内容和相关配置。

移除对象的全部未完成上传文件

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

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

  • PATH 替换为对象的路径。

将对象回滚到以前的版本

使用 mc rm 以及 --versions--newer-than 来移除比指定持续时间更旧的所有对象版本。这实际上会将对象“回滚”到当时的狀態。

重要

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

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

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

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

行为

删除 Bucket 内容

使用 mc rm 移除 Bucket 中的所有内容不会删除 Bucket 本身。与 Bucket 关联的任何配置都将保留,例如 default object lock settings

要完全移除 Bucket,请使用 mc rb 而不是 mc rm

MinIO 在对象移除时修剪空前缀

mc rm 依赖于 mc 移除 API 来删除对象。作为删除 Bucket 前缀中最后一个对象的一部分,mc 还将递归删除前缀中一直到 Bucket 根目录的每个空部分。 mc 仅将递归删除应用于作为对象写入操作**隐式**创建的前缀 - 也就是说,前缀不是使用显式目录创建命令(例如 mc mb)创建的。

例如,考虑一个名为 photos 的 Bucket,其中包含以下对象前缀

  • 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 命令删除了 NewYears.jpg,则 /NYE21 前缀将保留,因为它已**显式**创建。

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

版本化 Bucket 中的删除操作

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

mc 版本中的更改: RELEASE.2023-03-20T17-17-53Z

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

S3 兼容性

mc 命令行工具构建为与 AWS S3 API 兼容,并已在 MinIO 和 AWS S3 上进行了测试,以确保其预期功能和行为。

MinIO 对于其他兼容 S3 的服务不提供任何保证,因为它们的 S3 API 实现未知,因此不受支持。虽然 mc 命令可能按文档说明工作,但任何此类使用均需自行承担风险。