文档

mc rm

语法

mc rm 命令用于从 MinIO 部署的存储桶中 删除对象。 如需彻底删除存储桶,请改用 mc rb

你也可以对本地文件系统使用 mc rm,以获得与 rm 命令行工具类似的结果。

有关 MinIO 如何对对象执行 DELETE 操作的更多信息,请参见 对象删除

Important

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
Required

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

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
Optional

允许删除受 GOVERNANCE 对象锁保护的对象。

--dangerous
Optional

ALIAS 指定 MinIO 部署的根路径(所有存储桶)时, 允许执行 mc rm

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

建议先使用 --dry-run 运行命令, 验证站点范围删除操作的范围。

Warning

搭配 --versions 标志运行 mc rm --dangerous 是不可逆操作。执行前请尽可能 审慎核查,确保命令只应用于预期的 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 仅对指定的对象版本执行操作。

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

与以下任一标志互斥:

全局标志

此命令支持 全局标志 中的任意选项。

示例

删除单个对象

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

  • PATH 替换为对象路径。

递归删除存储桶内容

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 结合使用,可删除新于指定时长的 所有对象版本。这会有效地将对象“回滚”到该时间点的状态。

Important

删除对象的特定版本属于 破坏性 操作。你无法恢复 已删除的对象版本。

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 命令删除了 NewYears.jpg,由于 /NYE21显式 创建的,因此该前缀会保留不变。

如果将 mc rm 用于文件系统操作,mc 也会采用相同行为,递归裁剪直到 根目录的所有空目录。不过,mc 的删除 API 无法区分某个目录路径是显式 创建的,还是隐式创建的。如果 mc rm 删除了某个文件系统路径上的最后一个对象, mc 会在删除过程中递归删除从该路径向上直到根目录的所有空目录。

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

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

Changed in version mc: RELEASE.2023-03-20T17-17-53Z

输出会显示版本化文件的修改时间。 与 --dry-run 搭配使用时,这有助于确认你选择了正确的删除对象。

S3 兼容性

mc 命令行工具以兼容 AWS S3 API 为目标构建,并针对 MinIO 和 AWS S3 进行了测试,以验证预期的功能与行为。

对于其他 S3 兼容服务,MinIO 不提供任何保证,因为这些服务的 S3 API 实现未知, 因此不在支持范围内。虽然 mc 命令 可能 仍能按文档说明工作,但此类 用法需要你自行承担风险。