全新的備份利器推薦:Duplicity使用評測
原創【51CTO精選譯文】備份是系統管理員的必修課。在51CTO的專題《Linux 系統備份——操作實踐與工具介紹》中介紹了一些常用的備份工具,但這僅僅是數量眾多的備份工具當中的一部分。本文介紹的是一個新備份利器:Duplicity。下面這篇評測文章出自知名的英文運維博客Everything Sysadmin,作者Tom Limoncelli現在是Google的系統管理員。
曾經,我需要將一個服務器備份到遠程硬盤上,有幾種方式,而且我也可以自己動手寫一個方法。不過,我找到了 Duplicty,現在我向你強烈推薦:
Duplicity 使用 librsync 生產一個非常小的額外備份。它能夠生成遞增備份,然后使用 GPG 進行加密,能夠適用常用的方法發送至另一個服務器上,比如:scp、ftp、sftp、rsync等等??梢詮娜魏文夸涢_始備份,不限于加載點(mountpoint),并且可以指定你想要排除的文件。
安裝
如果你之前沒有做過,那最難的部分就是設置 GPG 密鑰。你需要保護好你的密鑰。比如,你的機器著火丟失了所有數據,而且沒有做密鑰備份,那將無法進行恢復。我把密鑰刻錄了幾張 CD 作為多個備份。
我要備份的機器是 colo 上的虛擬機。他們沒有提供備份服務,所以不得不自己動手。機器使用的是 FreeBSD 8.0-RELEASE-p4并且運行正常。代碼也是非常便攜式的:Python、GPG、librsync等等。沒有涉及內核或原始設備等類似問題。
我寫了一個簡單腳本,掃描所有我想要備份的目錄,然后運行:
duplicity --full-if-older-than 5W --encrypt-key="${PGPKEYID}" $DIRECTORY scp://myarchives@mybackuphost/$BACKUPSET$dir
“--full-if-older-than 5W”表示進行遞增備份,每隔 35 天進行一次完全的備份。我用 5W 而不是 4W,因為我想確保完全備份不會低于一個月。我每個月支付寬帶費用,我不想在一個月遇到兩件麻煩事,這會讓人崩潰。
我的方法:使用 scp 將文件備份到另一個機器上,這是一個很便宜的 USB2.0 硬盤,容量 1T。這樣設置,以便我能夠用 ssh 從源機器訪問目標機器而無需密碼。上例中的“myarchives”是我做備份用的用戶名,“mybackuphost”是主機。事實上,我指定了主機名,使用 .ssh/confi 將默認用戶名設置為“myarchives”。這樣,我可以在其他 shell 腳本中指定“mybackuphost”。
恢復
當然,人們真實關心的不是備份,而是恢復。在恢復文件時,duplicity 找到哪些遞增和完整備份需要進行恢復和解密。你只需指定日期(默認是“the lastest”,即***),然后它會自動完成所有工作。我所需的工作如此至少,這點讓我印象非常深刻。
系統運行一段時間之后,就需要進行恢復了,以確保一切正常。
恢復語法有點讓人困惑,文檔中也沒有提供太多示例。最常見的情況并非是對所有備份組進行恢復,而是:“某個文件有問題,或者我覺得某個文件有問題,所有我需要恢復舊版本(從某個特定日期來看)到 /tmp,來看看這個文件原本是什么樣的。”
我感到困惑的是:
1) 指定了文件或目錄的路徑,但你沒有列出指向備份加載點或目錄的路徑。事后來看,這是顯而易見的事情,當時這的確讓我很納悶。讓我明白過來的是,當我列出文件時,文件會顯示出來,而沒有加載點
2) 指定備份放置的地方時,你必須非常小心。你可以在命令行中指定,并在“--file-to-restore”選項中指定恢復的文件。你不能在命令行中指定所有文件,然后讓 duplicity 去猜從哪里分割——它做不到。
為了不用在意外刪除了重要文件之后的緊急情況下重新溫習那些命令,我做了一個如何進行恢復的記錄。為了服務新手們,我又進行了一些改善如下:
***步:列出所有備份到 “home/ta”區的文件:
duplicity list-current-files scp://mybackuphost/directoryname/home/tal
要理出它們在某個特定日期的情況,添加:--restore-time "2002-01-25"
第二步:從該列表恢復文件(不是恢復到最初位置):
duplicity restore --encrypt-key=XXXXXXXX --file-to-restore=path/you/saw/in/listing scp://mybackuphost/directoryname/home/tal /tmp/restore
假設舊文件在“/home/tal/path/to/file”,備份在“/home/tal”,你需要指定--file-to-restore 作為“”,而不是“/home/tal/path/to/file”。你可以列出一個目錄來獲取所有文件。/tmp/restore 應是一個已經存在的目錄。
恢復某個特定日期的文件,添加:--restore-time "2002-01-25"
結論:Duplicity 非常棒,而且速度也很快。這是因為善用 libsync 讓備份變得很小,同時也因為他們保持了備份文件的索引,這樣為了獲得文件列表無需對整個備份進行讀取。備份文件很小,劃分為多個小文件,這樣源機器就不需太多的臨時空間。用起來也非常簡單:他們能夠完成所有遞增和完整備份的工作,從而讓你能夠把關注焦點放在對什么進行備份和恢復上。
提示:與如何備份系統一樣,你需要不時進行一下“消防演習”,對恢復流程進行試驗。建議你將備份流程打包在一個 shell 腳本中,這樣每次都可以使用同一種方式。
再次強烈推薦: http://duplicity.nongnu.org
原文:http://everythingsysadmin.com/2010/10/review-the-duplicity-backup-sy.html
作者:Tom Limoncelli
【編輯推薦】