mc ilm rule add
版本 RELEASE.2022-12-24T15-21-38Z 中已更改: mc ilm rule rm
替换了 mc ilm add
。
语法
mc ilm rule add
命令会将对象生命周期管理规则添加到存储桶。
以下命令将新的生命周期管理规则添加到mydata
存储桶上,该存储桶位于myminio
部署中。
mc ilm rule add --expire-days 90 --noncurrent-expire-days 30 myminio/mydata
mc ilm rule add --expire-delete-marker myminio/mydata
mc ilm rule add --transition-days 30 --transition-tier "COLDTIER" myminio/mydata
mc ilm rule add --noncurrent-transition-days 7 --noncurrent-transition-tier "COLDTIER"
配置的规则具有以下效果
删除超过90天前的对象。
对象变为非当前对象后30天删除。
如果对象没有其他版本剩余,则删除
DeleteMarker
墓碑。将超过30天前的对象转换为
COLDTIER
远程层级。对象变为非当前对象后7天将其转换为
COLDTIER
远程层级。
该命令具有以下语法
mc [GLOBALFLAGS] ilm rule add \
[--prefix string] \
[--tags string] \
[--expire-days "integer"] \
[--expire-all-object-versions] \
[--expire-delete-marker] \
[--transition-days "string"] \
[--transition-tier "string"] \
[--noncurrent-expire-days "integer"] \
[--noncurrent-expire-newer "integer"] \
[--noncurrent-transition-days "integer"] \
[--noncurrent-transition-tier "string"] \
[--site-gt "string"] \
[--size-lt "string"] \
ALIAS
方括号
[]
表示可选参数。共享同一行的参数是相互依赖的。
使用管道
|
运算符分隔的参数是互斥的。
将示例复制到文本编辑器中,并在终端/shell中运行命令之前根据需要进行修改。
参数
- ALIAS
- 必需
在MinIO部署中添加对象生命周期管理规则的别名和存储桶。
例如
mc ilm rule add myminio/mydata
- --prefix
- 可选
将管理规则限制到特定的对象前缀。
例如
mc ilm rule add --prefix "meetingnotes/" myminio/mydata --expire-days "90"
该命令创建一个规则,该规则在
myminio
别名的mydata
存储桶中,对于任何具有meetingnotes/
前缀的对象,在90天后使其过期。
- --expire-all-object-versions
- 可选
mc版本新增功能: RELEASE.2024-02-24T01-33-20Z
使对象的当前**和**非当前所有版本过期。与
--expire-days
选项一起使用,以指定扫描程序进程应在多少天后删除对象的全部版本。在扫描程序处理此命令后,部署上将不再保留对象的任何版本。
MinIO版本变更: RELEASE.2024-05-01T01-11-10Z
此标志**仅**适用于其最新版本**不是**删除标记的对象。
- --expire-days
- 可选
创建对象后保留该对象的天数。在指定的天数过去后,MinIO 将标记该对象以进行删除。指定天数作为整数,例如
30
表示30天。对于版本化存储桶,过期规则仅适用于当前对象版本。使用
--noncurrent-expire-days
标志或--expire-all-object-versions
标志将过期行为应用于非当前对象版本。MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
与以下选项互斥
- --expire-delete-marker
- 可选
指定此选项以指示MinIO删除没有剩余对象版本的删除标记。具体来说,删除标记是给定对象的唯一剩余“版本”。
此选项与以下选项互斥
MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
- --transition-days
- 可选
从对象创建开始,MinIO 将对象标记为可进行转换的日历天数。MinIO 将对象转换为配置的远程层级,该层级指定给
--transition-tier
。指定天数作为整数,例如30
表示30天。对于版本化存储桶,转换规则仅适用于当前对象版本。使用
--noncurrent-transition-days
选项将转换行为应用于非当前对象版本。需要指定
--transition-tier
。MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
有关对象转换的更完整文档,请参阅对象转换(“分层”)。
- --transition-tier
- 可选
MinIO将对象转换为的远程层级。指定
mc ilm tier add
创建的现有远程层级。如果指定
--transition-days
,则为必需。
- --noncurrent-expire-days
- 可选
对象版本变为非当前(即该对象的另一个版本现在是HEAD)后保留该对象版本的天数。在指定的天数过去后,MinIO 将标记非当前对象版本以进行删除。
此选项的行为与S3
NoncurrentVersionExpiration
操作相同。MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
- --noncurrent-transition-days
- 可选
对象成为非当前对象(即被同一对象的较新版本替换)的天数,此后MinIO 将该对象版本标记为可进行转换。一旦系统主机日期时间超过该日历日期,MinIO 将对象转换为配置的远程层级,该层级指定给
--transition-tier
。此选项对非版本化存储桶无效。需要指定
--noncurrent-transition-tier
。此选项的行为与S3
NoncurrentVersionTransition
操作相同。MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
- --noncurrent-transition-tier
- 可选
MinIO将非当前对象版本转换为的远程层级。指定
mc ilm tier add
创建的远程层级。
- --noncurrent-expire-newer
- 可选
要保留的最大非当前对象版本数,按从最新到最旧的顺序排列。
使用此标志以先进先出的方式保留文件的某些过去版本。在保留最大数量的非当前版本后,MinIO 将标记任何剩余的较旧非当前对象版本以供过期。
下表列出了根据
--noncurrent-expire-newer 3
的一些对象版本及其过期资格v5(当前版本)
当前版本不受ILM规则的影响。
v4
保留
v3
保留
v2
保留
v1
标记为过期
MinIO 保留当前版本v5。MinIO 还保留接下来的
3
个非当前版本,从最新的开始。这意味着MinIO 将v4
、v3
和v2
标记为要保留的三个非当前版本。v1
将是第四个非当前版本,超出要保留的非当前版本的限制,因此MinIO 将v1
标记为过期。更新此标志的数字只会影响对象的未标记版本。如果增加要保留的数字,任何已标记为过期的版本都不会改变。
MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
全局标志
此命令支持任何 全局标志。
示例
在指定天数后过期所有 Bucket 内容
使用 mc ilm rule add
以及 --expire-all-object-versions
和 --expire-days
标志,将所有当前和非当前 Bucket 内容标记为在对象创建后经过指定天数后过期。
mc ilm rule add ALIAS/PATH --expire-all-object-versions --expire-days "DAYS"
将前缀下的非当前对象版本转换到不同的层级
使用 mc ilm rule add
以及 --prefix
和 --transition-tier
将对象的旧非当前版本转换到不同的存储层级。
mc ilm rule add --prefix "doc/" --transition-days "90" --transition-tier "MINIOTIER-1" \
--noncurrent-transition-days "45" --noncurrent-transition-tier "MINIOTIER-2" \
myminio/mybucket
此命令查看 myminio
部署的 mybucket
Bucket 中具有 doc/
前缀的内容。
前缀中超过 90 天的当前对象将移动到
MINIOTIER-1
存储层级。前缀中超过 45 天的非当前对象将移动到
MINIOTIER-2
存储层级。MINIOTIER-1
和MINIOTIER-2
都已使用mc admin tier add
创建。
过期前缀下的所有对象,保留当前对象版本的时间比非当前对象版本长
使用 mc ilm rule add
命令以及 --prefix
、--expire-days
和 --noncurrent-expire-days
在不同时间过期对象当前和非当前版本。
mc ilm rule add --prefix "doc/" --expire-days "300" --noncurrent-expire-days "100" myminio/mybucket
此命令查看 myminio
部署的 mybucket
Bucket 中具有 doc/
前缀的内容。
当前对象在 300 天后过期。
非当前对象在 100 天后过期。
转换大小大于 1MiB 的前缀 /doc
中的非当前版本
使用 mc ilm rule add
命令以及 --prefix
、--size-gt
和 --noncurrent-expire-days
在不同时间过期对象当前和非当前版本。
mc ilm rule add --prefix "doc/" --size-gt 1MiB --transition-days "90" --transition-tier "MINIOTIER-1" \
--noncurrent-transition-days "45" --noncurrent-transition-tier "MINIOTIER-1" \
myminio/mybucket/
此命令查看 myminio
部署的 mybucket
Bucket 中具有 doc/
前缀的内容。
该命令选择以下对象
超过 90 天且大小大于 1MiB 的当前对象。
超过 45 天且大小大于 1MiB 的非当前对象。
选定的对象将转换到 MINIOTIER-1
。
移除删除标记
以下命令将移除对象的删除标记,其中删除标记是对象唯一剩余的版本。
mc ilm rule add ALIAS/PATH --expire-delete-marker
所需权限
有关添加规则所需的权限,请参阅父命令上的 所需权限。
行为
生命周期管理对象扫描程序
MinIO 使用扫描程序进程检查对象是否符合所有已配置的生命周期管理规则。由于高IO工作负载或系统资源有限而导致的扫描缓慢可能会延迟生命周期管理规则的应用。有关更多信息,请参阅生命周期管理对象扫描程序。
过期与转换
MinIO 支持在同一个 Bucket 或 Bucket 前缀中指定过期和转换规则。无论对象的转换状态如何,MinIO 都可以对对象执行过期规则。使用 mc ilm rule ls
查看当前配置的对象生命周期管理规则,以了解过期和转换规则之间是否存在任何潜在的交互。
过期已删除对象的所有版本
从 MinIO Server RELEASE.2024-05-01T01-11-10Z 开始,MinIO 支持删除具有删除标记作为其最新版本的物件的所有版本。MinIO 仅支持使用 JSON 的此功能。
要添加此功能,首先使用 mc ilm rule export
导出要修改的规则。使用类似于以下内容的其他 JSON 修改您导出的规则文件
<DelMarkerObjectExpiration>
<Days> 10 </Days>
</DelMarkerObjectExpiration>
此示例 JSON
在 10 天后过期已删除对象的所有版本。将 <Days>
元素中的值修改为您希望在删除或过期对象后等待的天数。
S3 兼容性
mc 命令行工具构建为与 AWS S3 API 兼容,并已在 MinIO 和 AWS S3 上进行了测试,以确保其功能和行为符合预期。
MinIO 不对其他 S3 兼容服务提供任何保证,因为它们的 S3 API 实现未知,因此不受支持。虽然 mc 命令可能按文档描述工作,但任何此类使用均需自行承担风险。