我在網路上搜尋找到一種方法來對我的 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