如何對(duì)LUKS加密的磁盤/分區(qū)執(zhí)行遠(yuǎn)程增量備份?

責(zé)任編輯:editor005

2015-03-06 14:43:23

摘自:51CTO

想在本地主機(jī)上開始進(jìn)行遠(yuǎn)程備份過程,我們以root帳戶的身份執(zhí)行下列命令:下一步是把生成的補(bǔ)丁文件從本地主機(jī)拷貝到遠(yuǎn)程主機(jī)。最后的步驟就是,在遠(yuǎn)程主機(jī)上執(zhí)行下列命令,這會(huì)把補(bǔ)丁文件應(yīng)用到 dev REMDEV:

出于安全方面的原因,我們當(dāng)中一些人用Linux統(tǒng)一密鑰設(shè)置(LUKS)對(duì)家里或虛擬專用服務(wù)器(VPS)上的硬盤進(jìn)行了加密;這些硬盤的容量很快就會(huì)增加到數(shù)十GB或數(shù)百GB。于是,我們?cè)谙硎躄UKS設(shè)備的安全性的同時(shí),可能會(huì)開始考慮一種可行的遠(yuǎn)程備份解決方案。就安全的異地備份而言,我們需要解決方案在經(jīng)過加密的LUKS設(shè)備的數(shù)據(jù)塊層面運(yùn)作,而不是在未加密的文件系統(tǒng)層面運(yùn)作。于是到頭來(lái),我們發(fā)覺自己處于這樣一種情形:每當(dāng)我們想要備份,就要傳輸整個(gè)LUKS設(shè)備里面的數(shù)據(jù)(比如說假設(shè)200GB)。這顯然不可行。那么,我們?cè)撊绾翁幚磉@個(gè)問題呢?

解決之道:Bdsync

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

使用Bdsync,首次備份將把整個(gè)LUKS塊設(shè)備里面的數(shù)據(jù)拷貝到遠(yuǎn)程主機(jī)上,所以要花很長(zhǎng)的時(shí)間才能完成。不過,這個(gè)初始備份完成后,如果我們?cè)贚UKS設(shè)備上構(gòu)建了一些新的文件,第二次備份就會(huì)迅速完成,因?yàn)槲覀冎恍枰截惏l(fā)生變化的數(shù)據(jù)塊。這時(shí)候經(jīng)典的增量備份起到了作用!

將Bdsync安裝到Linux上

Bdsync并不包含在Linux發(fā)行版的標(biāo)準(zhǔn)軟件庫(kù)里面。因而,你需要從源代碼來(lái)構(gòu)建它。使用下面針對(duì)特定發(fā)行版的指令,將Bdsync及參考手冊(cè)頁(yè)安裝到你的系統(tǒng)上。

在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'

對(duì)LUKS加密的設(shè)備執(zhí)行異地增量備份

我假設(shè)你已經(jīng)將LUKS加密的塊設(shè)備配置成備份來(lái)源(比如/dev/LOCDEV),還假設(shè)你有一個(gè)遠(yuǎn)程主機(jī),來(lái)源設(shè)備的內(nèi)容將在主機(jī)上得到備份(比如/dev/REMDEV)。

你需要訪問兩個(gè)系統(tǒng)上的根帳戶,并且設(shè)置無(wú)需密碼的SSH訪問,以便從本地主機(jī)訪問遠(yuǎn)程主機(jī)。最后,你還需要將Bdsync安裝到兩個(gè)主機(jī)上。

想在本地主機(jī)上開始進(jìn)行遠(yuǎn)程備份過程,我們以root帳戶的身份執(zhí)行下列命令:

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

這里需要一番解釋。Bdsync客戶端將以根帳戶的身份與遠(yuǎn)程主機(jī)建立一條SSH連接,并且使用--server選項(xiàng)執(zhí)行Bdsync客戶軟件。說明一下,/dev/LOCDEV是本地主機(jī)上的來(lái)源LUKS塊設(shè)備,而/dev/REMDEV是遠(yuǎn)程主機(jī)上的目標(biāo)塊設(shè)備。它們應(yīng)該是/dev/sda(面向整個(gè)磁盤)或/dev/sda2(面向一個(gè)分區(qū))。本地Bdsync客戶端的輸出結(jié)果隨后輸出到gzip,gzip在本地主機(jī)構(gòu)建DEV.bdsync.gz(所謂的二進(jìn)制補(bǔ)丁文件)。

你第一次運(yùn)行上述命令后,要花很長(zhǎng)的時(shí)間,具體取決于你的互聯(lián)網(wǎng)/以太網(wǎng)速度以及/dev/LOCDEV的大小。切記:你的兩個(gè)塊設(shè)備(/dev/LOCDEV和/dev/REMDEV)其大小必須一樣。

下一步是把生成的補(bǔ)丁文件從本地主機(jī)拷貝到遠(yuǎn)程主機(jī)。使用scp是一個(gè)辦法:

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

最后的步驟就是,在遠(yuǎn)程主機(jī)上執(zhí)行下列命令,這會(huì)把補(bǔ)丁文件應(yīng)用到/dev/REMDEV:

# gzip -d

我建議先用不含有任何重要數(shù)據(jù)的小分區(qū)做一番試驗(yàn),然后再用Bdsync來(lái)處理實(shí)際數(shù)據(jù)。只有你完全了解了整個(gè)過程,才可以開始備份實(shí)際數(shù)據(jù)。

結(jié)束語(yǔ)

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

歡迎留言交流。

英文:remote incremental backup luks encrypted disk partition

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)