我当前正在运行 gsutil rsync 云构建命令:
gcr.io/cloud-builders/gsutil
-m rsync -r -c -d -x "\.gitignore" . gs://mybucket/
我在这里使用 -x "\.gitignore"
参数来尝试不复制 .gitignore
文件,如下所述:
https://cloud.google.com/storage/docs/gsutil/commands/rsync
但是,当查看存储桶和日志时,它仍然显示:
2021-04-23T13:29:37.870382893Z 步骤 #1:复制 file://./.gitignore [Content-Type=application/octet-stream]...
因此,尽管有 -x "\.gitignore"
参数,rsync
仍在复制文件。
根据文档 -x
是一个 Python 正则表达式,因此 //./.gitignore
应该由 \.gitignore
捕获
有谁知道为什么这不起作用以及为什么文件仍在被复制?
最佳答案
请参阅rsync.py
源代码:
if cls.exclude_pattern.match(str_to_check):
在 Python 中,re.match
仅返回出现在字符串开头的匹配项。
因此,为了使用 -x
参数在任何地方查找匹配项,您需要在需要查找的模式前添加 .*
或 (?s).*
:
gcr.io/cloud-builders/gsutil
-m rsync -r -c -d -x ".*\.gitignore" . gs://mybucket/
请注意,为了确保 .gitignore
出现在字符串末尾,您需要附加 $
, -x ".*\.gitignore$"
.
关于regex - 为什么 Google Cloud Builder 没有使用 gsutil rsync -x 排除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67230947/