Rsync
為什麼 glusterfs 在 rsync 導入期間重命名文件?
在初始 rsync 數據到 glusterfs 失敗後搜尋錯誤時,我在 /var/log/glusterfs/data-nfs.log 中找到了以下條目:
$$ MSGID: 109066 $$ $$ dht-rename.c:1410:dht_rename $$0-volume1-dht:重命名 /source/ .filename.jpg.bWVXS4 (hash=volume1-replicate-0/cache=volume1-replicate-0) => /dest/filename.jpg (hash=volume1-replicate-0/記憶體=)
肯定沒有以點開頭的文件名,我只是仔細檢查了它。這個條目是關於什麼的?有成千上萬個。
這就是 rsync 的工作方式。它將文件寫入臨時位置(以點開頭),然後在文件完全寫入後,將其重命名為最終位置。它需要保留原始文件,因為 rsync 的算法是如何工作的——它讀取原始文件的塊並將它們與通過網路發送的更改數據交錯。
您可以通過使用 option 來避免這種行為
--inplace
,但如果您依賴它(而不是複制新文件),它會對增量同步算法造成可怕的影響。