我想將本地目錄同步到Google雲端存儲中的存儲分區。我想複製遠程不存在的本地文件,跳過遠程和本地已存在的文件。這可能與GSUtil做到這一點?我似乎找不到GSUtil的「同步」選項或「不覆蓋」。是否可以編寫腳本?Google雲端存儲 - GSUtil - 複製文件,跳過現有文件,不覆蓋
我在Linux上(Ubuntu 12.04)?
我想將本地目錄同步到Google雲端存儲中的存儲分區。我想複製遠程不存在的本地文件,跳過遠程和本地已存在的文件。這可能與GSUtil做到這一點?我似乎找不到GSUtil的「同步」選項或「不覆蓋」。是否可以編寫腳本?Google雲端存儲 - GSUtil - 複製文件,跳過現有文件,不覆蓋
我在Linux上(Ubuntu 12.04)?
gsutil現在支持cp命令上的noclobber標誌(-n)。將gsutil更新到最新版本(使用gsutil update),然後在執行復制時使用-n標誌。
該標誌將跳過已存在於目的地的文件。
你需要(-n)添加到命令,在Google Cloud Platform正式提到:
-n:無撞。指定時,目標上的現有文件或對象不會被覆蓋。任何由此選項跳過的項目都將被報告爲跳過。此選項將執行額外的GET請求,以在嘗試上載數據之前檢查項目是否存在。這將節省重新傳輸的數據,但額外的HTTP請求可能會使較小的對象傳輸變得更慢並且更昂貴。
例(使用多線程):
gsutil -m cp -n -a public-read -R large_folder gs://bucket_name
使用rsync,您可以複製丟失/修改的文件/對象:
gsutil -m rsync -r <local_folderpath> gs://<bucket_id>/<cloud_folderpath>
此外,如果你使用-d
選項,你會也刪除您的存儲桶中不再存在的文件/對象。
另一個選擇可能是使用Object Versioning,因此您將使用本地數據替換存儲桶中的文件/對象,但您始終可以回到以前的版本。
更新:gsutil現在(2014年5月)支持rsync選項。 – 2014-06-02 01:43:44