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

咨询如何使用GSUTIL RSYNC同步指定Python文件到Cloud Composer GCS桶

可行实现方案

方案1:直接使用gsutil rsync过滤规则(最简单,适配后缀过滤需求)

gsutil rsync本身支持按规则过滤文件,你可以直接修改cloudbuild.yaml的rsync参数,仅同步需要的.py文件和生成的REVISION.txt,自动过滤其他无关文件。修改后的配置如下:

steps:
- name: ubuntu
  args: ['bash', '-c', "echo '$COMMIT_SHA' > REVISION.txt"]
- name: gcr.io/cloud-builders/gsutil
  args:
    - '-m'
    - 'rsync'
    - '-d'
    - '-r'
    # 规则按书写顺序生效,优先级从高到低
    - '--include=*/' # 先允许遍历所有子目录,避免子目录被排除后内部文件无法同步
    - '--include=*.py' # 允许同步所有后缀为py的DAG文件
    - '--include=REVISION.txt' # 允许同步生成的版本标记文件
    - '--exclude=*' # 排除所有其他未被上方规则允许的文件
    - '.' # 源路径为当前构建工作目录
    - 'gs://${_GCS_BUCKET}/dags'

该方案无需修改流程结构,仅调整参数即可满足过滤图片、文档、csv、ipynb等无关文件的需求。

方案2:预构建临时同步目录(适配复杂过滤规则场景)

如果后续你有更复杂的过滤需求,比如仅同步特定目录下的py文件、排除测试类py脚本等,可以先在构建步骤中把符合要求的文件提取到临时目录,再同步该目录即可。配置示例如下:

steps:
- name: ubuntu
  args: ['bash', '-c', "echo '$COMMIT_SHA' > REVISION.txt"]
# 新增预处理步骤,提取符合要求的文件到临时目录,保留原目录结构
- name: ubuntu
  args:
  - 'bash'
  - '-c'
  - |
    mkdir -p /workspace/sync_dir
    # 复制所有.py文件,可按需调整find规则,比如仅扫描指定目录、排除测试文件
    find . -name "*.py" -exec cp --parents {} /workspace/sync_dir/ \;
    # 复制版本标记文件到临时目录根路径
    cp REVISION.txt /workspace/sync_dir/
- name: gcr.io/cloud-builders/gsutil
  args:
    - '-m'
    - 'rsync'
    - '-d'
    - '-r'
    - '/workspace/sync_dir/'
    - 'gs://${_GCS_BUCKET}/dags'

该方案灵活性更高,比如你要限制仅同步PROJECT_A和Project_B_APAC目录下的py文件,只需要把find命令修改为find ./PROJECT_A ./Project_B_APAC -name "*.py"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:36:06