全新的備份利器推薦:Duplicity使用評測

來源:互聯網
上載者:User

BKJIA精選譯文】備份是系統管理員的必修課。在BKJIA的專題《Linux 系統備份——操作實踐與工具介紹》中介紹了一些常用的備份工具,但這僅僅是數量眾多的備份工具當中的一部分。本文介紹的是一個新備份利器:Duplicity。下面這篇評測文章出自知名的英文營運部落格Everything Sysadmin,作者Tom Limoncelli現在是Google的系統管理員。

曾經,我需要將一個伺服器備份到遠程硬碟上,有幾種方式,而且我也可以自己動手寫一個方法。不過,我找到了 Duplicty,現在我向你強烈推薦:

http://duplicity.nongnu.org

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.