Rsync

rsync 與 –hard-links 凍結

  • November 20, 2019

我有一個名為 的大目錄servers,其中包含許多由rsnapshot. 這意味著該結構或多或少類似於:

./servers
./servers/daily.0
./servers/daily.0/file1
./servers/daily.0/file2
./servers/daily.0/file3
./servers/daily.1
./servers/daily.1/file1
./servers/daily.1/file2
./servers/daily.1/file3
...

快照是以rsnapshot節省空間的方式創建的:如果/servers/daily.0/file1與 相同/servers/daily.1/file1,它們都使用硬連結指向同一個 inode,而不是每個週期都複製一個完整的快照。/servers/daily.0/file1/servers /daily.0/file1

我嘗試使用硬連結結構複製它,以節省目標驅動器上的空間,使用:

nohup time rsync -avr --remove-source-files --hard-links servers /old_backups

一段時間後,rsync 凍結 - 沒有新行添加到nohup.out文件中,並且似乎沒有文件從一個驅動器移動到另一個驅動器。刪除nohup並沒有解決問題。

知道有什麼問題嗎?

亞當

我根據來之不易的經驗給出的答案是:不要這樣做。不要嘗試複製大量使用硬連結的目錄層次結構,例如使用或類似創建的目錄層次rsnapshot結構rsync --link-dest。除了小數據集外,它對任何東西都不起作用。至少,不可靠。(當然,您的里程可能會有所不同;也許您的備份數據集比我的要小得多。)

使用rsync --hard-links在目標端重新創建文件的硬連結結構的問題是在源端發現硬連結是困難的。rsync必須在記憶體中建構一個 inode 映射以查找硬連結,除非您的源文件相對較少,否則這可能而且將會爆炸。就我而言,當我了解到這個問題並正在尋找替代解決方案時,我嘗試了cp -a,這也應該保留目標中文件的硬連結結構。它攪動了很長時間,然後終於死了(有段錯誤或類似的東西)。

我的建議是為rsnapshot備份留出整個分區。當它填滿時,使另一個分區聯機。將硬連結密集的數據集作為整個分區而不是單個文件移動要容易得多。

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