GCS桶.gcloudignore规则未生效,如何验证及排查原因?
问题原因
gsutil的rsync命令并不支持读取.gcloudignore文件。这个忽略规则文件是为gcloud CLI的部署类命令设计的(比如gcloud app deploy、gcloud functions deploy、gcloud storage cp),rsync仅支持通过自身的-x参数传入正则表达式来指定排除规则,所以你之前用rsync时所有文件都会被同步,完全不受.gcloudignore的影响。
验证.gcloudignore效果的方法
要验证.gcloudignore的规则是否生效,得用支持该文件的gcloud命令配合--dry-run参数做测试,不用实际上传就能看到结果:
- 先确认gcloudignore功能已启用:
gcloud config set gcloudignore/enabled true - 执行带
--dry-run的存储复制命令,查看哪些文件会被上传:
命令输出的列表里只会包含符合规则的待上传文件,gcloud storage cp -r ./ gs://my_awesome_bucket/dags/dbt/gcloudignore_test --dry-run.gcloudignore中指定的文件不会出现在列表里。 - 也可以用
gcloud beta storage ls直接查看当前目录下不会被排除的文件:
这个命令会列出所有会被gcloud命令识别为"需要保留"的文件,相当于模拟了gcloud beta storage ls ./ --recursive --gcloudignore.gcloudignore的过滤效果。
如果坚持要用rsync实现文件排除,只能继续使用-x参数手动传入正则表达式,目前没有工具能自动把.gcloudignore的规则转换成rsync兼容的格式。
内容的提问来源于stack exchange,提问作者Ololo
相关产品推荐
相关产品推荐

