Scp

scp 完成後是否需要檢查文件損壞?

  • January 6, 2016

scp使用以下命令遞歸地傳輸了許多文件和文件夾:

scp -rp /source/folder myremoteusername@122.10.12.123:/destination/folder

傳輸完成後,我是否需要檢查所有文件是否已傳輸且沒有任何損壞,或者是否scp需要處理(即,如果任何文件未正確傳輸,則會顯示一些錯誤消息)?

scp驗證它複製了對方發送的所有數據。傳輸的完整性由加密通道協議保證。因此,您無需在傳輸後驗證完整性。這將是多餘的,並且不太可能擷取任何硬體錯誤,因為您正在比較的數據可能會從記憶體中讀取。定期驗證數據可能很有用,但在傳輸後立即驗證是沒有意義的。

但是,您確實需要確保它scp不會告訴您出了什麼問題。應該有一條錯誤消息,但可靠的指標是scp如果出現問題,它會返回一個非零退出程式碼。

scp更準確地說,如果返回 0(即成功狀態碼),您就知道文件已正確傳輸。無論如何,當您執行任何命令時,都需要檢查退出狀態是否為 0 。如果scp返回錯誤狀態,或者它被信號殺死,或者它永遠不會因為系統在執行時崩潰或斷電而死,那麼你無法保證。特別是,由於scp將文件直接複製到其最終名稱,這意味著您可以在系統崩潰的情況下最終得到部分文件。保證複製的部分是正確的,但文件可能會被截斷。

為了獲得更好的可靠性,請使用 rsync 而不是 scp。除非另有說明,否則 rsync 會寫入一個臨時文件,並在完成後將其移動到位。因此,如果 rsync 返回成功程式碼,您就知道文件存在並且是正確、完整的副本;如果 rsync 沒有返回錯誤程式碼,那麼將不存在任何文件(除非有舊版本的文件,在這種情況下,不會修改舊版本)。

引用自:https://unix.stackexchange.com/questions/253233