Backup

如何將 rsnapshot 連結到原始文件?

  • January 11, 2017

我希望 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 之類的東西。

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