2016-11-30 80 views
0

當恢復上傳(已經大約2GB,2,000個文件上傳出40Gb,7000文件)cp不顯示列表「跳過現有文件」也是如此。此外,gsutil消息[xx/7.3k files][xx MiB/ 40GiB]在停止時(ei:[2k/7.3k files][2GiB/ 40GiB])未啓動,但從頭開始:[00/7.3k files][00 MiB/ 40GiB]谷歌雲存儲:gsutil cp -n不會「跳過現有」或顯示正在上傳的文件

我檢查了上傳https://console.cloud.google.com/storage/browser:沒有什麼奇怪的,新文件正在上傳,昨天發送的文件仍然存在。那麼爲什麼gsutil不會說2GiB和2k文件已經在線?

另外cp命令不會顯示它當前正在上傳的文件,因爲它曾經是。任何想法爲什麼? (rsync雖然)

這是我的cp命令gsutil -m cp -r -n "MyLocalFolder" gs://my_bucket/Backup 另外我沒有修改我的本地文件夾,也沒有它包含的文件。


我遇到的另一個問題是,-m rsync -r命令嘗試,而不是上傳已存在的文件跳過他們。對於調試,我在cprsync命令之間切換了幾次,而rsync沒有完全考慮cp命令已經上傳的內容:它不斷上傳現有文件。那麼cprsync有不同的校驗和嗎?如果不能解釋這種行爲如何?

解決方案是第二個問題: 其實我用的CP和rsync相同的目標,但也有不建以同樣的方式: 如果cp命令被gsutil -m cp -r -n "MyLocalFolder" gs://my_bucket/Backup那麼rsync命令是gsutil -m rsync -r "MyLocalFolder" gs://my_bucket/Backup/MyLocalFolder

+0

我發佈了一個答案,但是如果您發現某些您認爲是bug的東西,是否可以創建一個簡單的文件夾和一組命令來複制它並將郵件發送到[email protected]?謝謝。 –

回答

1

gsutil cp -n仍需要發現本地文件夾中需要上傳的文件(因爲文件夾的內容可能已經更改),所以如果您重複該命令並且目標存儲桶中存在一些現有文件,則仍然需要枚舉本地文件,即使它要跳過它們。這就是爲什麼它不會像[2k/7.3k files] [2GiB/40GiB]那樣開始。

儘管如此,它仍應該輸出「Skipping existing item」作爲已存在的項目。

rsync使用與cp相同的校驗和邏輯,所以我懷疑你沒有上傳文件到完全相同的目的地。

gsutil版本4.21改變了cprsync命令兩者來顯示概要的信息,而不是單獨的進展打印對每個文件,它傾向於將打印的信息壓倒性量提供給終端,特別是當使用-m標誌。

+0

是的,這是合乎邏輯的,它不是開始,當我啓動時,在'[2k/7.3k文件] [2GiB/40GiB]',但對我的理解,它應該過一段時間(列舉本地和遠程文件)顯示'[2k/7.3k文件] [2GiB/40GiB]'。我幾乎沒有得到這個,在幾分鐘後,我得到:'[0k/7.3k文件] [100MB/40GiB]'(也許是在我停止gsutil時正在上傳的文件) 。 – Sitak

+0

同樣對於rsync,我上傳到相同的位置(我使用相同的命令,我只用'-m rsync -r'替換'-m cp -r -n',所以本地和遠程位置保持不變)。如果我正確地得到了你的話,gsutil 4.21對於cp和rsync的正常行爲就是顯示(在我的情況下)2000行跳過的項目,然後只顯示這條定期更新的行(ei,'[2k/7.3k files] [2GiB/40GiB]',然後是'3k/7.3k文件] [2.1GiB/40GiB]'...)。那是對的嗎? – Sitak

+0

這有點正確,它會在枚舉時跳過項目,所以最終會到達2000個跳過的行。我想如果你需要更多的調試細節,我們應該使用一個可重複的例子。 –