Linux

rsync 目錄,因此所有更改都以原子方式顯示

  • January 15, 2016

我為本地網路做一些經常使用的儲存庫的夜間和每周鏡像。有幾次,有人試圖在 rsync 發生時進行更新,但由於預期的文件還沒有全部到位而失敗。

是否可以進行 rsync 以使所有更改的文件在完成時僅以正確的名稱出現?我知道 rsync 在每次傳輸過程中使用臨時 .hidden 文件,但是我可以推遲重命名直到它以某種方式完成嗎?

或者,我似乎可以使用 –backup 選項將所有更改移動到一個目錄並在之後自動移動它們,但我希望該功能與現在的功能相反。

我在 Linux 上是為了它的價值。

您可以使用該--link-dest=選項。基本上你會創建一個新文件夾,所有文件都硬連結到新文件夾。一切完成後,您只需交換文件夾名稱並刪除舊文件夾名稱即可。

在 Linux 中不可能做到 100% 原子,因為它沒有核心/VFS 支持。但是,交換名稱實際上只需要 2 個系統呼叫,因此完成它應該花費不到 1 秒的時間。只能在 Darwin (MAC/OSX) 上使用 HFS 文件系統上的 exchangedata 系統呼叫。

引用自:https://serverfault.com/questions/741346