Rsync

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

  • February 8, 2021

我正在網上搜尋以找到一種方法來對我的 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 e #2,但我刪除了它們,然後恢復了 backup3,一切都恢復了原狀。所以我跑了

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

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

我的問題是:我錯了嗎?有沒有更好的方法來使用 rsync 備份完整的系統?

PS:目標設備將是具有相同文件系統的外部驅動器。

使用硬連結,可以儲存一個文件的多個副本,並且只佔用一個副本的磁碟空間。您所看到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 兆字節。現在讓我們看看 backup1 和 backup2 有多大:

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

現在,backup2 似乎只有 8k。那是因為硬連結沒有被重複計算。

引用自:https://unix.stackexchange.com/questions/312490