歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何對LUKS加密的磁盤/分區執行遠程增量備份?

如何對LUKS加密的磁盤/分區執行遠程增量備份?

日期:2017/2/28 14:00:44   编辑:Linux教程

出於安全方面的原因,我們當中一些人用Linux統一密鑰設置(LUKS)對家裡或虛擬專用服務器(VPS)上的硬盤進行了加密;這些硬盤的容量很快就會增加到數十GB或數百GB。於是,我們在享受LUKS設備的安全性的同時,可能會開始考慮一種可行的遠程備份解決方案。就安全的異地備份而言,我們需要解決方案在經過加密的LUKS設備的數據塊層面運作,而不是在未加密的文件系統層面運作。於是到頭來,我們發覺自己處於這樣一種情形:每當我們想要備份,就要傳輸整個LUKS設備裡面的數據(比如說假設200GB)。這顯然不可行。那麼,我們該如何處理這個問題呢?

解決之道:Bdsync

這時候,一款名為Bdysnc(這要感謝Rolf Fokkens)的出色的開源工具就可以派得上用場了。顧名思義,Bdsync可以通過網絡同步“塊設備”。就快速同步而言,Bdsync可以在本地/遠程塊設備中生成並比較MD5檢驗和,只同步有差異的數據。Rsync可以在文件系統層面完成任務,而Bdsync是可以在塊設備層面完成任務。它自然也可以與經過加密的LUKS設備協同運行。相當棒!

使用Bdsync,首次備份將把整個LUKS塊設備裡面的數據拷貝到遠程主機上,所以要花很長的時間才能完成。不過,這個初始備份完成後,如果我們在LUKS設備上構建了一些新的文件,第二次備份就會迅速完成,因為我們只需要拷貝發生變化的數據塊。這時候經典的增量備份起到了作用!

將Bdsync安裝到Linux上

Bdsync並不包含在Linux發行版的標准軟件庫裡面。因而,你需要從源代碼來構建它。使用下面針對特定發行版的指令,將Bdsync及參考手冊頁安裝到你的系統上。

在Debian、Ubuntu或Linux Mint上

$ sudo apt-get install git gcc libssl-dev
$ git clone https://github.com/TargetHolding/bdsync.git $ cd bdsync
$ make
$ sudo cp bdsync /usr/local/sbin
$ sudo mkdir -p /usr/local/man/man1
$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

在Fedora或CentOS/RHEL上

$ sudo yum install git gcc openssl-devel
$ git clone https://github.com/TargetHolding/bdsync.git $ cd bdsync
$ make
$ sudo cp bdsync /usr/local/sbin
$ sudo mkdir -p /usr/local/man/man1
$ sudo sh -c 'gzip -c bdsync.1 > /usr/local/man/man1/bdsync.1.gz'

對LUKS加密的設備執行異地增量備份

我假設你已經將LUKS加密的塊設備配置成備份來源(比如/dev/LOCDEV),還假設你有一個遠程主機,來源設備的內容將在主機上得到備份(比如/dev/REMDEV)。

你需要訪問兩個系統上的根帳戶,並且設置無需密碼的SSH訪問,以便從本地主機訪問遠程主機。最後,你還需要將Bdsync安裝到兩個主機上。

想在本地主機上開始進行遠程備份過程,我們以root帳戶的身份執行下列命令:

# bdsync "ssh root@remote_host bdsync --server" /dev/LOCDEV /dev/REMDEV | gzip > /some_local_path/DEV.bdsync.gz

這裡需要一番解釋。Bdsync客戶端將以根帳戶的身份與遠程主機建立一條SSH連接,並且使用--server選項執行Bdsync客戶軟件。說明一下,/dev/LOCDEV是本地主機上的來源LUKS塊設備,而/dev/REMDEV是遠程主機上的目標塊設備。它們應該是/dev/sda(面向整個磁盤)或/dev/sda2(面向一個分區)。本地Bdsync客戶端的輸出結果隨後輸出到gzip,gzip在本地主機構建DEV.bdsync.gz(所謂的二進制補丁文件)。

你第一次運行上述命令後,要花很長的時間,具體取決於你的互聯網/以太網速度以及/dev/LOCDEV的大小。切記:你的兩個塊設備(/dev/LOCDEV和/dev/REMDEV)其大小必須一樣。

下一步是把生成的補丁文件從本地主機拷貝到遠程主機。使用scp是一個辦法:

# scp /some_local_path/DEV.bdsync.gz root@remote_host:/remote_path

最後的步驟就是,在遠程主機上執行下列命令,這會把補丁文件應用到/dev/REMDEV:

# gzip -d < /remote_path/DEV.bdsync.gz | bdsync --patch=/dev/DSTDEV

我建議先用不含有任何重要數據的小分區做一番試驗,然後再用Bdsync來處理實際數據。只有你完全了解了整個過程,才可以開始備份實際數據。

結束語

總之,我們介紹了如何使用Bdsync為LUKS設備執行增量備份。與rsync一樣,每次備份時,只需要將一小部分數據、而不是整個LUKS設備的數據拷貝到異地備份站點,這就節省了帶寬和備份時間。放心好了,所有數據傳輸都由SSH或SCP加以保護,另外設備本身由LUKS進行加密。還有可能改善這種方案:使用可以運行bdsync的專門用戶(而不是根用戶)。我們還可以將bdsync用於任何的塊設備,比如LVM卷或RAID磁盤,另外還很容易設置Bdsync,以便將本地磁盤備份到USB驅動器上。正如你所見,它的應用前景無限廣闊!

歡迎留言交流。

英文:remote incremental backup luks encrypted disk partition

Copyright © Linux教程網 All Rights Reserved