使用 rsync 進行完整差異備份的最有效且安全的方法

使用 rsync 進行完整差異備份的最有效且安全的方法

我在網路上搜尋找到一種方法來對我的 Linux 機器(不是伺服器)進行完整備份並隨時恢復所有內容。

我從每個線程上連結最多的指南開始,http://www.mikerubel.org/computers/rsync_snapshots/index.html我認為這種類型的備份是增量備份,經過一天的研究我發現 差異備份和增量備份在rsync指令有什麼不同?和其他討論,但我不確定我真正在做什麼。

按照指南和帖子,我決定嘗試使用一個名為 source 的資料夾(在備份整個系統之前)

rsync -av --delete /home/user/source /home/user/backup/backup0/

然後我添加和刪除了一些檔案並進行了三次備份

rsync -avH --delete --link-dest=/home/user/backup/backup0 /home/user/source /home/user/backup/backup1 

rsync -avH --delete --link-dest=/home/user/backup/backup1 /home/user/source /home/user/backup/backup2

rsync -avH --delete --link-dest=/home/user/backup/backup2 /home/user/source /home/user/backup/backup3

我認為透過這種類型的備份,我將會得到類似的東西:

backup0-->backup1-->backup2-->backup3

因此,如果我想恢復「backup3」的內容,則需要#1和#2,但我刪除了它們,然後恢復了backup3,一切都恢復原狀。所以我跑了

user@user:/backup$ du -sh *
450M    backup0
620K    backup1
624K    backup2
628K    backup3

它看起來像差異備份,而不是增量備份,但我認為要進行差異備份,我必須為每個備份進行設置 --link-dest=/home/user/backup/backup0

我的問題是:我是否弄錯了什麼?有沒有更好的方法可以使用 rsync 備份整個系統?

PS:目標設備將是具有相同檔案系統的外部磁碟機。

答案1

使用硬鏈接,可以儲存一個文件的多個副本,並且只佔用一份副本的磁碟空間。您所看到的是,du請注意不要重複計算相同文件的多個硬連結所佔用的空間。

如果你要運行:

du -sh backup3

你會發現backup3佔用了450M左右。如果你運行:

du -sh backup2 backup3

你會發現backup2佔了約450M,而backup3佔用量很少。這是因為du首先查看了 backup2 並計算了它的空間。當它查看 backup3 時,它只計算使用的新磁碟空間,而不計算 backup2 中已計算的檔案的硬連結。

每個備份都是完整的,並且包含執行完整還原所需的一切。然而,由於檔案是硬連結的,因此使用的總磁碟空間要少得多。

例子

我在目錄中放置了一個1.2MB的檔案src/。讓我們建立兩個備份:

$ rsync -a src backup1
$ rsync -a --link-dest=../backup1 src backup2

讓我們看看 backup2 有多大:

$ du -sh backup2
1.2M    backup2

backup2 有 1.2 MB。現在讓我們看看 backup1 和 backup2 有多大:

$ du -sh backup1 backup2
1.2M    backup1
8.0K    backup2

現在,backup2 看起來只有 8k。這是因為硬連結沒有被重複計算。

答案2

硬連結是節省磁碟空間的最佳方法。我沒有使用 rsync 編寫腳本,而是使用一個包裝器來完成這項工作:蝴蝶備份

該包裝器使用純 rsync 並將 rsync 轉換為真正的備份/復原工具(它還具有存檔/匯出模式)。

此外,在其選項中,它具有--mode/-m允許您選擇備份模式的標誌增加的或者微分

差分模式將保持第一個完整,然後所有後續備份都將連接到它,由於硬鏈接,節省了大量空間。

一個例子:

$ bb backup --computer mypc --destination /backup --data User --type Unix
 --mode Differential

相關內容