2017-04-07 65 views
1

在錯誤的存儲桶上意外運行刪除命令,對象版本控制處於打開狀態,但我不太瞭解應該採取哪些步驟來恢復文件,或者更重要的是如何執行因爲我已經刪除了幾百個這樣的文件。從Google雲端存儲中恢復大容量文件

將不勝感激任何幫助。

回答

1

要恢復數以百計的你可以做的簡單的東西的對象:

gsutil cp -AR gs://my-bucket gs://my-bucket 

這將所有對象(包括刪除的文件)複製到實時生成,只使用元數據的複製,即不需要複製實際的字節數。注意事項:

  1. 它會讓已刪除的代保留在原位,因此需要額外的存儲空間。

  2. 如果您的存儲桶不是空的,此命令將重新複製所有活動對象(最後還有一個額外的存檔版本,同樣也會讓您額外存儲)。

  3. 如果你想恢復大量的對象,這個簡單的腳本運行得太慢 - 你想要並行化單個gsutil cp操作。在這種情況下,您不能使用gsutil -m選項,因爲gsutil會阻止這種情況,爲了保留生成順序(例如,如果有幾代同名的對象,並行複製它們最終將與實時生成來自不可預知的一代)。如果您只有一代,您可以通過執行類似操作來並行複製:

    gsutil ls -a gs:// my-bucket/** | SED的/ \(。\)\(#[0-9] \)/ CP的gsutil \ 1 \ 2 \ 1 \ & /'> gsutil_script.sh

這生成的列表所有對象(包括已刪除的對象),並將其轉換爲gsutil cp命令序列,以便將這些對象(通過特定於生成的名稱)並行複製回實時生成。如果列表很長,你會想要分解成部分,所以你不要(例如)嘗試分叉10萬個進程來執行並行複製(這會使你的機器過載)。

+0

感謝Mike的深入解答,祝願文檔準確無誤! – Pythonist

+0

實際上,當我嘗試使用您的命令進行並行應對時,在s命令的RHS錯誤中存在'''sed:-e表達式#1,字符35:無效引用\ 2。 – Pythonist

+0

很抱歉 - 命令中的反斜線字符被github格式化吞噬,所以我不得不逃脫它們。我更新了命令來解決這個問題 - 請再試一次。 –

相關問題