You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为GCS存储桶中不匹配指定前缀的对象配置生命周期规则?

解决GCS生命周期规则排除特定前缀对象的问题

GCS原生没有提供直接的“反向前缀匹配”条件,但可以通过两种实用方案实现你的需求:删除存储桶中除Foo/Bar/前缀外、超过30天的所有对象。

方案一:标签+反向条件匹配(推荐,扩展性强)

这种方式通过给需要保留的对象打标签,让生命周期规则仅删除无标签的对象,步骤如下:

  1. 批量给目标前缀对象打标签
    用gsutil命令给Foo/Bar/下的所有对象添加专属标签(比如keep: important):

    gsutil label ch -r keep:important gs://你的存储桶名/Foo/Bar/
    

    注意:后续上传到Foo/Bar/的新对象,记得在上传时带上这个标签,或者配置存储桶的默认标签规则实现自动添加。

  2. 配置生命周期规则
    创建规则,仅删除没有keep: important标签且年龄超过30天的对象。对应的生命周期配置JSON如下:

    {
      "rule": [
        {
          "action": {"type": "Delete"},
          "condition": {
            "age": 30,
            "not": {
              "matchesLabels": {"keep": "important"}
            }
          }
        }
      ]
    }
    

    用gsutil应用配置:

    gsutil lifecycle set lifecycle.json gs://你的存储桶名
    

方案二:双规则优先级(无需标签,适合简单场景)

通过设置两个规则,让全局删除规则和例外保留规则配合:

  1. 全局规则:匹配所有对象,30天后执行删除
  2. 例外规则:仅匹配Foo/Bar/前缀,设置极长的保留时间(比如99999天)才删除
    这样Foo/Bar/下的对象几乎不会被触发删除,其他对象则按30天规则清理。对应的JSON配置:
{
  "rule": [
    {
      "action": {"type": "Delete"},
      "condition": {"age": 30}
    },
    {
      "action": {"type": "Delete"},
      "condition": {
        "age": 99999,
        "matchesPrefix": ["Foo/Bar/"]
      }
    }
  ]
}

这种方式无需打标签,但如果后续需要新增保留前缀,就得额外添加新规则,扩展性不如标签方案。

内容的提问来源于stack exchange,提问作者Dasph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 03:42:45