如何將 rsnapshot 連結到原始文件?
我希望 rsnapshot 不為我的所有文件創建第二個副本,而只是擁有指向原始文件的硬連結,並且只保存更改的副本。
我有一個 Windows 和 linux 伺服器。我想將我的 linux 系統的備份儲存到 windows 系統上。但是,我也希望為使用者提供快照。
我在 linux 上執行 rsnapshot 以獲得快照。我無法將快照根放在 Windows 上,因為我無法將文件屬性保留在不同的文件系統上,因此快照位於 linux 上。這意味著現在我的文件使用了兩倍的空間(原始和快照)
由於快照不是備份,因此我通過壓縮文件並將壓縮文件發送到 Windows 來創建備份。
問題是因為我創建了一個單獨的備份,所以我不需要在 linux 上保留同一個文件的兩個副本。因此,我希望 rsnapshot 不為我的所有文件創建第二個副本,而只包含指向原始文件的硬連結。
我可以簡單地手動創建包含所有硬連結的第一個保留/間隔文件夾嗎?(cp -al)
rsnapshot 的工作方式是在第一次執行時創建一個完整副本。
在下一個,它只儲存已更改的文件。如果文件未更改,則會創建指向該文件的硬連結。
這意味著現在我的文件使用了兩倍的空間(原始和快照)
是的。你有工作文件和快照。
問題是因為我創建了一個單獨的備份,所以我不需要在 linux 上保留同一個文件的兩個副本。因此,我希望 rsnapshot 不為我的所有文件創建第二個副本,而只包含指向原始文件的硬連結。
如果您想要 rsnapshot 在第一次執行時不複製整個樹,那麼問題是因為它是同一個文件,所以它無法檢測到更改。
FILE_A -> DATA1 RFILE_A1 -> DATA2 IF FILE_A == RFILE_A1: HARDLINK RFILE_A1 RFILE_A2 ElSE COPY FILE_A RFILE_A2
這是基本邏輯。
如果 RFILE_A1 是到 FILE_A 的硬連結,則問題是無法檢測到 FILE_A 上的任何更改,因為基礎數據是相同的。
簡單的解釋是,硬連結是一個名稱。它指向光碟上的數據。因此,當您創建額外的硬連結時,您正在重用磁碟數據。因此無法檢測到更改。
簡短的回答(TL;DR),你不能。你需要第一個完整的副本。
另一種選擇可能是使用 Git 之類的東西。