2014-03-28 119 views
4

我試圖自動化將我的網絡資產與Google雲存儲同步的過程。我基本上需要將我的開發目錄中的所有內容複製到雲中。但是,我需要忽略.git目錄和其他不相關的文件。gsutil cp -R如何忽略像.git,.gitignore這樣的文件?

我不能只是做一個'gsutil cp -R。 '因爲這絕對是一切,包括.git。 我試過'find。| fgrep git | gsutil cp -I'但是將所有的目錄放平並放入根目錄!

有沒有辦法我可以用gsutil解決這個問題或者我必須在腳本中上傳所有目錄(除了.git)-R然後在當前目錄中上傳單個文件?

+0

[rsync的在4.15的gsutil將不排除隱藏文件(可能的重複http://stackoverflow.com/questions/33702631/rsync-will-not- exclude-hidden-files-in-gsutil-4-15) – mimming

回答

3

你有兩個選擇:

A)卸下git的文件在上傳後:

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

B)使用查找排除混帳文件:

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,這會很容易用他們的 - 排除標誌就更容易了。

9

你可以使用如下命令:

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

這是一個合適的答案。不知道爲什麼它downvoted。 – sirugh

+0

不適合我。仍在同步.git文件夾 –

+0

這應該被標記爲正確答案 – Nag