將同一來源並行同步到相同目標是否安全

將同一來源並行同步到相同目標是否安全

我的應用程式使用 rsync 將檔案從網路驅動程式複製到本機作為快取以提高效能。

但由於我的應用程式可能是並行運行的,所以 rsync 也是如此,並且可能存在 2 個實例的情況同步針對相同的來源和目錄並行運行。

我遇到了一個問題,即目標位置未完全同步(將一個子目錄留空)。所以我懷疑這是rsync的問題,所以

  • rsync 將檔案從相同來源並行複製到相同目標是否安全?
  • 是否有任何選項可以確保此類操作的正確性。

我正在使用的選項是:

rsync -a --copy-unsafe-links --delete

答案1

並行運行 rsyn 可能是安全的,但效率不高,因為檔案很可能會被傳輸兩次,因為 rsync 在開始時構成了要傳輸的檔案清單。當然,兩個 rsync 同時傳輸同一個檔案的可能性總是很小,但之後的內容應該是相同的。

為了防止雙重運行,通常我會編寫一個腳本來檢查,否則touch會在最後刪除一個鎖定檔案。作為一個選項,如果中斷腳本或發生錯誤,您可以在腳本中使用陷阱來清理鎖定檔案(在 shell 中使用「help trap」)。據我所知,rsync本身沒有這樣的鎖定機制(這很難實現)。

相關內容