如何在忽略.git,.gitignore等文件的情况下执行gsutil cp -R?

时间:2014-03-28 02:40:34

标签: google-cloud-platform gsutil

我正在尝试自动化使用Google云端存储同步我的网络资源的过程。我基本上需要将开发目录中的所有内容复制到云端。但是,我需要忽略.git目录和其他一些不相关的文件。

我不能只做'gsutil cp -R。 '因为这绝对是一切,包括.git。 我试过'find。| fgrep git | gsutil cp -I',但这会使所有目录变平并将它们放在root中!

有没有办法可以用gsutil解决这个问题,还是我必须在脚本中循环,用-R上传所有目录(.git除外)然后上传当前目录中的单个文件?

2 个答案:

答案 0 :(得分:19)

您可以使用如下命令:

gsutil rsync -x '\.git.*' dev_dir gs://your-bucket

答案 1 :(得分:3)

您有两种选择:

A)上传后删除git文件:

gsutil rm gs://bucket/\*.git\*

B)使用find排除git文件:

find . -not -path '*/.git' -type f -printf '%P\n' | xargs -I '{}' gsutil cp '{}' gs://bucket/'{}'

来源:https://groups.google.com/forum/#!topic/gsutil-discuss/zoHhkTPhiNc

如果gsutil实现rsync会更容易,使用--exclude标志会更容易。