# mc ilm rule edit

LLMS 索引： [llms.txt](/zh/llms.txt)

---

<a id="mc-ilm-rule-edit"></a>
<a id="minio-mc-ilm-rule-edit"></a>

<a id="command-mc.ilm.rule.edit"></a>

> [!NOTE]
> **变更: RELEASE.2022-12-24T15-21-38Z**
>
> `mc ilm rule edit` 替代 `mc ilm edit`。

## 语法 {#id2}

[`mc ilm rule edit`](#command-mc.ilm.rule.edit) 命令用于修改 MinIO 存储桶上现有的对象生命周期管理规则。

**示例**

以下命令用于修改 `myminio` 部署上 `mydata` 存储桶的现有生命周期管理规则：

```shell
mc ilm rule edit --id "c79ntj94b0t6rukh6lr0" --expiry-days 90  myminio/mydata

mc ilm rule edit --id "c79nu2p4b0t6qko19rgg" --expired-object-delete-marker myminio/mydata

mc ilm rule edit --id "c79n19dn10dnab109fg1" --transition-days 30 --tier "COLDTIER"
```

该命令按如下方式修改指定规则：

- 删除超过 90 天的对象。
- 如果对象没有其他剩余版本，则删除 `DeleteMarker` 墓碑标记。
- 将超过 30 天的对象迁移到 `COLDTIER` 远程层。

**语法**

命令语法如下：

```shell
mc [GLOBALFLAGS] ilm rule edit                                       \
                 --id "string"                                       \
                 [--prefix "string"]                                 \
                 [--enable]                                          \
                 [--disable]                                         \
                 [--expire-all-object-versions]                      \
                 [--expire-days "string"]                            \
                 [--expire-delete-marker]                            \
                 [--transition-days "string"]                        \
                 [--transition-tier "string"]                        \
                 [--noncurrent-expire-days "string"]                 \
                 [--noncurrent-expire-newer "string"]                \
                 [--noncurrent-transition-days "string"]             \
                 [--noncurrent-transition-tier "string"]             \
                 [--tags]                                            \
                 ALIAS
```

- 方括号 `[]` 表示可选参数。
- 同一行中的参数彼此相互依赖。
- 使用管道符 `|` 分隔的参数彼此互斥。

请先将示例复制到文本编辑器中并按需修改，再在终端 / shell 中运行命令。

### 参数 {#id3}

##### `ALIAS` {#mc.ilm.rule.edit.ALIAS}

*mc-cmd*

*Required*

要修改对象生命周期管理规则的 MinIO 部署中，存储桶的 [alias](/zh/reference/minio-mc/mc-alias-set/#alias) 和完整路径。 例如：

```text
mc ilm rule edit myminio/mydata
```

##### `--id` {#mc.ilm.rule.edit.-id}

*mc-cmd*

*Required*

规则的唯一 ID。使用 [`mc ilm rule ls`](/zh/reference/minio-mc/mc-ilm-rule-ls/#command-mc.ilm.rule.ls) 列出存储桶规则，并获取要修改规则的 `id`。

##### `--disable` {#mc.ilm.rule.edit.-disable}

*mc-cmd*

*Optional*

停用该规则，但保留该规则以供后续使用。 当规则被禁用时，对象不会迁移或过期。

##### `--enable` {#mc.ilm.rule.edit.-enable}

*mc-cmd*

*Optional*

启用规则以迁移或使对象过期。

##### `--prefix` {#mc.ilm.rule.edit.-prefix}

*mc-cmd*

*Optional*

将管理规则限制为特定的存储桶前缀。

例如：

```text
mc ilm rule edit --prefix "meetingnotes/" myminio/mydata --expire-days "90"
```

该命令会修改一条规则：对于 `myminio` ALIAS 中 `mydata` 存储桶内前缀为 `meetingnotes/` 的任意对象，在 90 天后过期。

##### `--expire-all-object-versions` {#mc.ilm.rule.edit.-expire-all-object-versions}

*mc-cmd*

*Optional*

> [!NOTE]
> **新增: mc**
>
> RELEASE.2024-02-24T01-33-20Z

使对象的所有当前版本和非当前版本都过期。 与 [`--expire-days`](/zh/reference/minio-mc/mc-ilm-rule-add/#mc.ilm.rule.add.-expire-days) 选项结合使用，可指定扫描器进程在多少天后删除对象的所有版本。

在 [scanner](/zh/operations/concepts/scanner/#minio-concepts-scanner) 处理该命令后，部署中不会保留该对象的任何版本。

> [!NOTE]
> **新增: MinIO**
>
> RELEASE.2024-05-01T01-11-10Z

该标志 *仅* 适用于最新版本 **不** 是 delete marker 的对象。

##### `--expire-days` {#mc.ilm.rule.edit.-expire-days}

*mc-cmd*

*Optional*

对象创建后保留的天数。达到指定天数后，MinIO 会将对象标记为待删除。

使用该选项时请谨慎，其行为可能导致已上传对象立即过期。任何在指定过期日期 *之后* 创建的对象都会自动满足过期条件。同样地，若指定的日历日期 *早于* 当前系统主机时间， 该规则覆盖的所有对象都会被标记为删除。指定日历日期过后，请考虑立即移除使用该选项的 ILM 规则。

对于启用版本控制的存储桶，过期规则仅适用于 *当前* 对象版本。使用 [`--noncurrent-expire-days`](#mc.ilm.rule.edit.-noncurrent-expire-days) 选项 可将过期行为应用于非当前对象版本。

MinIO 使用 [scanner process](/zh/operations/concepts/scanner/#minio-concepts-scanner) 根据所有已配置的 生命周期管理规则检查对象。高 IO 负载或系统资源受限导致的扫描变慢，可能会延迟 生命周期管理规则的生效。更多信息请参阅 [生命周期管理对象扫描器](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-scanner)。

与以下选项互斥：

- [`--expire-delete-marker`](#mc.ilm.rule.edit.-expire-delete-marker)

##### `--expire-delete-marker` {#mc.ilm.rule.edit.-expire-delete-marker}

*mc-cmd*

*Optional*

指定该选项可让 MinIO 删除没有剩余对象版本的对象的 delete marker。 具体来说，delete marker 是给定对象 *唯一* 剩余的“版本”。

该选项与以下选项互斥：

- [`--tags`](#mc.ilm.rule.edit.-tags)
- [`--expire-days`](#mc.ilm.rule.edit.-expire-days)

MinIO 使用 [scanner process](/zh/operations/concepts/scanner/#minio-concepts-scanner) 根据所有已配置的 生命周期管理规则检查对象。高 IO 负载或系统资源受限导致的扫描变慢，可能会延迟 生命周期管理规则的生效。更多信息请参阅 [生命周期管理对象扫描器](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-scanner) 和 [对象删除](/zh/administration/object-management/object-delete/#minio-object-delete)。

##### `--noncurrent-expire-days` {#mc.ilm.rule.edit.-noncurrent-expire-days}

*mc-cmd*

*Optional*

对象版本变为 *non-current*（即该对象的另一个版本成为当前 *HEAD*）后保留的天数。 达到指定天数后，MinIO 会将非当前对象版本标记为待删除。

该选项的行为与 S3 `NoncurrentVersionExpiration` 操作一致。

MinIO 使用 [scanner process](/zh/operations/concepts/scanner/#minio-concepts-scanner) 根据所有已配置的 生命周期管理规则检查对象。高 IO 负载或系统资源受限导致的扫描变慢，可能会延迟 生命周期管理规则的生效。更多信息请参阅 [生命周期管理对象扫描器](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-scanner)。

##### `--noncurrent-expire-newer` {#mc.ilm.rule.edit.-noncurrent-expire-newer}

*mc-cmd*

*Optional*

在应用过期前要保留的对象 non-current 版本数量。 超出指定数量的较旧 non-current 版本会过期。

默认情况下，当过期规则生效时，MinIO 不保留任何 non-current 版本。

##### `--noncurrent-transition-days` {#mc.ilm.rule.edit.-noncurrent-transition-days}

*mc-cmd*

*Optional*

对象处于 non-current 状态（即被该对象更新版本替换）后经过多少天， MinIO 将该对象版本标记为可迁移。系统主机时间到达该日历日期后， MinIO 会将对象迁移到 [`--transition-tier`](#mc.ilm.rule.edit.-transition-tier) 指定的 远程存储层。

该选项对未启用版本控制的存储桶无效。需要指定 [`--noncurrent-transition-tier`](#mc.ilm.rule.edit.-noncurrent-transition-tier)。

该选项的行为与 S3 `NoncurrentVersionTransition` 操作一致。

如果远程层是另一个 MinIO 部署，可将值设置为 `0`，使新对象立即满足迁移到远程层的条件。

MinIO 使用 [scanner process](/zh/operations/concepts/scanner/#minio-concepts-scanner) 根据所有已配置的 生命周期管理规则检查对象。高 IO 负载或系统资源受限导致的扫描变慢，可能会延迟 生命周期管理规则的生效。更多信息请参阅 [生命周期管理对象扫描器](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-scanner)。

##### `--noncurrent-transition-tier` {#mc.ilm.rule.edit.-noncurrent-transition-tier}

*mc-cmd*

*Optional*

MinIO [transitions noncurrent objects versions](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-tiering) 所使用的远程存储层。 指定一个通过 [`mc ilm tier add`](/zh/reference/minio-mc/mc-ilm-tier-add/#command-mc.ilm.tier.add) 创建的远程存储层。

MinIO *不会* 自动将对象从先前指定的远程层迁移到新的远程层。 MinIO 会继续将存储在旧远程层上的对象请求路由到旧远程层。

##### `--tags` {#mc.ilm.rule.edit.-tags}

*mc-cmd*

*Optional*

一个或多个以 `&` 分隔的键值对，用于描述要应用生命周期配置规则的对象标签。

该选项与以下选项互斥：

- [`--expire-delete-marker`](#mc.ilm.rule.edit.-expire-delete-marker)

##### `--transition-days` {#mc.ilm.rule.edit.-transition-days}

*mc-cmd*

*Optional*

对象创建后经过多少个日历天，MinIO 会将对象标记为可迁移。 MinIO 会将对象迁移到 [`--transition-tier`](#mc.ilm.rule.edit.-transition-tier) 指定的远程存储层。 以整数指定天数，例如 `30` 表示 30 天。 如果远程层是另一个 MinIO 部署，可将值设置为 `0`，使新对象立即满足迁移到远程层的条件。

对于启用版本控制的存储桶，迁移规则仅适用于 *当前* 对象版本。使用 [`--noncurrent-transition-days`](#mc.ilm.rule.edit.-noncurrent-transition-days) 选项 可将迁移行为应用于非当前对象版本。

需要指定 [`--transition-tier`](#mc.ilm.rule.edit.-transition-tier)。

MinIO 使用 [scanner process](/zh/operations/concepts/scanner/#minio-concepts-scanner) 根据所有已配置的 生命周期管理规则检查对象。高 IO 负载或系统资源受限导致的扫描变慢，可能会延迟 生命周期管理规则的生效。更多信息请参阅 [生命周期管理对象扫描器](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-scanner)。

##### `--transition-tier` {#mc.ilm.rule.edit.-transition-tier}

*mc-cmd*

*Optional*

MinIO [transition objects](/zh/administration/object-management/object-lifecycle-management/#minio-lifecycle-management-tiering) 所使用的远程存储层。 指定一个通过 [`mc ilm tier add`](/zh/reference/minio-mc/mc-ilm-tier-add/#command-mc.ilm.tier.add) 创建的远程存储层。

如果指定 [`--transition-days`](#mc.ilm.rule.edit.-transition-days)，则该选项必填。

MinIO *不会* 自动将对象从先前指定的远程层迁移到新的远程层。 MinIO 会继续将存储在旧远程层上的对象请求路由到旧远程层。

### 全局参数 {#id10}

此命令支持 [全局标志](/zh/reference/minio-mc/#minio-mc-global-options) 中的任意选项。

## 示例 {#id11}

### 修改现有生命周期管理规则 {#id12}

使用带有 [`--id`](#mc.ilm.rule.edit.-id) 的 [`mc ilm rule edit`](#command-mc.ilm.rule.edit) 修改现有对象过期规则：

```shell
mc ilm rule edit ALIAS/PATH --id "RULEID" [FLAGS]
```

- 将 [`ALIAS`](#mc.ilm.rule.edit.ALIAS) 替换为 S3 兼容主机的 [`alias`](/zh/reference/minio-mc/mc-alias/#command-mc.alias)。
- 将 [`PATH`](#mc.ilm.rule.edit.ALIAS) 替换为 S3 兼容主机上存储桶的路径。
- 将 `RULEID` 替换为对象生命周期管理规则的唯一 ID。 使用 [`mc ilm rule ls`](/zh/reference/minio-mc/mc-ilm-rule-ls/#command-mc.ilm.rule.ls) 查找 `RULEID`。
- 指定任意附加标志以新增或修改生命周期管理规则。 例如，指定 [`--transition-days`](#mc.ilm.rule.edit.-transition-days) 以覆盖该规则现有的迁移天数值。

### 禁用生命周期管理规则 {#id13}

使用带有 [`--disable`](#mc.ilm.rule.edit.-disable) 的 [`mc ilm rule edit`](#command-mc.ilm.rule.edit) 停止使用现有管理规则。

```shell
mc ilm rule edit --id "RULEID" --disable myminio/mybucket
```

- 将 `RULEID` 替换为对象生命周期管理规则的唯一 ID。 使用 [`mc ilm rule ls`](/zh/reference/minio-mc/mc-ilm-rule-ls/#command-mc.ilm.rule.ls) 查找 `RULEID`。
- 将 `myminio` 替换为规则所在部署的 ALIAS。
- 将 `mybucket` 替换为规则对应的存储桶。

## 所需权限 {#id14}

有关编辑规则所需的权限，请参阅父命令中的 [required permissions](/zh/reference/minio-mc/mc-ilm-rule/#minio-mc-ilm-rule-permissions)。

## 行为 {#id15}

### S3 兼容性 {#s3}

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

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