mc rm
语法
使用 mc rm 命令 removes objects 从 MinIO 部署的桶中删除对象。
要完全删除一个存储桶,请使用 mc rb 命令。
您还可以将 mc rm 命令用于本地文件系统,
以产生类似于命令行工具 rm 的结果。
有关 MinIO 如何对对象执行 DELETE 操作的更多信息,请参阅 minio-object-delete 。
以下命令从 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
- RequiredMinIO部署的 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 rm从ALIAS目标永久删除 所有对象 及其 版本。在执行全局删除操作之前,建议先使用 --dry-run标志运行命令以验证删除操作的范围。警告 使用 mc rm --dangerous标志和--versions标志运行ALIAS命令是不可逆的。 在执行之前,务必尽一切可能确保命令只适用于 您希望删除的`ALIAS`目标。
- --force
- Optional允许使用以下任意参数运行 mc rm:
- --incomplete, I
- Optional删除指定对象的不完整上传。 如果任何 ALIAS指定了一个桶, 那么 必须 也指定--recursive和--force。
- --newer-than
- Optional删除指定天数内更新的对象。 指定 #d#hh#mm#ss格式的字符串。 例如:--newer-than 1d2hh3mm4ss默认为 0(所有对象)。
- --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命令来启用或禁用桶版本控制。
- --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
递归删除存储桶的内容
使用  mc rm`命令,配合 :mc-cmd:`~mc rm --recursive
和 --force 选项,
以递归方式删除存储桶的内容。
mc rm --recursive --force ALIAS/PATH
这个操作不会删除存储桶本身。要删除存储桶以及其中所有的
内容和关联配置,请使用 mc rb 命令。
删除对象的所有不完整上传文件
使用 mc rm 和 --incomplete 选项删除对象的未完成上传文件。
mc rm --incomplete --recursive --force ALIAS/PATH
将对象回滚到以前的版本
使用 mc rm 命令配合 --versions
和 --newer-than 选项可以删除
所有比指定时间 duration 更新的对象版本。
这实际上是将对象 “回滚” 到那个时间点的状态。
重要
删除对象的特定版本是一个 破坏性 操作。您无法 恢复已删除的对象版本。
mc rm ALIAS/PATH --versions --newer-than DURATION
行为
删除存储桶内容
使用 mc rm 命令删除存储桶中的所有内容不会删除存储桶本身。与存储桶关联的任何配置仍然保持不变,
例如 default object lock settings
命令设定的默认对象锁定设置。
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 rm --version-id
- 要从桶中删除一个对象的的所有版本,请使用 - mc rm --versions
- 要从桶中删除一个对象的所有非当前版本,请使用 - mc rm --non-current
在 mc 版本发生变更: RELEASE.2023-03-20T17-17-53Z
输出显示了版本文件的修改时间。
当与 --dry-run 一起使用时,这可以帮助确认您选择了要删除的正确对象。
S3兼容性
mc 命令行工具是为了与 AWS S3 API 兼容而构建的,并且已经过测试, 以确保在与 MinIO 和 AWS S3 配合使用时,功能和行为符合预期。
MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现是 未知的,因此不受支持。尽管 mc 命令 可能 如文档中所 述工作,但任何此类使用都是您自己的风险。
