我有一個Perl腳本,調用「的gsutil CP」複製選定從GCS到本地文件夾:的gsutil CP:併發執行導致本地文件損壞
$cmd = "[bin-path]/gsutil cp -n gs://[gcs-file-path] [local-folder]";
$output = `$cmd 2>&1`;
腳本通過HTTP,並呼籲因此可以多次啓動(例如通過雙擊鏈接)。發生這種情況時,本地文件最終可能會是正確大小的兩倍,因此顯然會損壞。三件事情出現奇怪:
的gsutil似乎並沒有被鎖定本地文件正在寫入到 它,讓另一個線程(在這種情況下的gsutil的另一個實例) 寫入同一個文件。
'-n'似乎沒有效果。我預料它會阻止 gsutil的第二個實例嘗試複製操作。
MD5簽名檢查失敗:正常的gsutil刪除 目標文件,如果有一個簽名不匹配,但這顯然 並不總是發生。
有問題的文件大於2MB(通常大約5MB),因此可能會與自動恢復功能進行一些交互。如果本地文件尚不存在,那麼Perl腳本只會調用gsutil,但由於GCS傳輸身份驗證的時間延遲,這並不能捕獲雙擊。
的gsutil版本:3.42在FreeBSD 8.2
任何人都遇到類似的問題?任何人有任何見解?
Edward Leigh