企業(yè)級系統(tǒng)備份 BackupPC的配置與使用手冊
這份指南將會協(xié)助你運用 CentOS testing 軟件庫內(nèi)的 RPM 來設(shè)置 BackupPC。它不會詳細地解釋 BackupPC 所支持的一切設(shè)置。它亦會假設(shè)你會設(shè)置 BackupPC 通過 rsync 來進行備份。BackupPC 可支持 archive、tar、smb 及 rsyncd 的備份,但這份指南只會專注采用 rsync 的 Linux 主機。BackupPC 擁有論充足的文檔關(guān)于設(shè)置方面的選項,這些指引亦收藏在它的網(wǎng)頁界面中。另外,BackupPC 應(yīng)該駐于一臺專用的服務(wù)器上,因為 Apache 必須以系統(tǒng)上 BackupPC 用戶的身份來執(zhí)行,而這樣會影響網(wǎng)頁服務(wù)器的正常運作。
系統(tǒng):CentOS 5.x
參考文件
[ http://backuppc.sourceforge.net/ ]
設(shè)置軟件庫
首先要做的事情就是將 CentOS testing 軟件庫連同 yum-priorities 插件一并安裝。
# cd /etc/yum.repos.d # wget http://dev.centos.org/centos/5/CentOS-Testing.repo # yum install yum-priorities
請依從 wiki 內(nèi)有關(guān)設(shè)置 [http://wiki.centos.org/zh/PackageManagement/Yum/Priorities?highlight=(yum)|(priorities)|yum-priorities] 的指引。如果你安裝了 RPMFroge 的軟件庫,你必須確定所有 CentOS Base 項目的優(yōu)先次序是 1,RPMForge 項目的優(yōu)先次序是 2,而 CentOS testing 軟件庫的優(yōu)先次序是 3。如果你并未安裝 RPMForge 軟件庫,所有 Perl 組件將會下載自 testing 軟件庫,否則,它們將會來自 RPMForge。要設(shè)置 RPM 軟件庫,請依從 wiki 內(nèi)有關(guān) [軟件庫]的指引。
安裝 BackupPC
接下來,請安裝 BackupPC 的 RPM、Apache、及 mod_perl。Perl 所依賴的一切將會自動被收集起來。
# yum --enablerepo=c5-testing install backuppc httpd mod_perl
設(shè)置 Apache
如上述所提及,假若要一切正常地與 CGI 及 mod_perl 運作,Apache 的執(zhí)行身份必須是安裝 RPM 時在系統(tǒng)上所創(chuàng)建的 BackupPC 用戶。請你現(xiàn)在就把合適的值設(shè)于 httpd.conf 內(nèi)。
# vim /etc/httpd/conf/httpd.conf ## 更改 User apache 為 User backuppc User backuppc Servername backuppc.domain.com:80
存儲并離開文件,然后更改被創(chuàng)建于 conf.d 目錄下的 backuppc.conf 文件。
# vim /etc/httpd/conf.d/backuppc.conf ## 將 Allow from 127.0.0.1 改為 all Allow from all
存儲并離開這個文件,然后創(chuàng)建你將會用來訪問網(wǎng)頁界面的用戶及密碼。
# htpasswd -c /var/lib/backuppc/passwd/htpasswd your_user New password: your_password Re-type new password: your_password Adding password for user your_user
最后,引導(dǎo) Apache 并設(shè)置它于開機時引導(dǎo)。然后瀏覽你的機器并確定 Apache 可以派出測試頁面。
# service httpd start # chkconfig httpd on
請瀏覽 http://你的服務(wù)器 并確定 Apache 能正常運作。
BackupPC 服務(wù)器設(shè)置
初次設(shè)置時,你必須在命令行上編輯數(shù)個參數(shù),額外的你可以通過命令行或網(wǎng)頁界面來完成。請打開 BackupPC 的主要配置文件,然后設(shè)置下列參數(shù)。TopDir 這個路徑就是放置實際備份的地地。它的缺省值是 /var/lib/backuppc。我利用一個加密的分區(qū)來作備份,因此我的路徑是 /srv/backuppc。請按你的需要修改它。
# vim /etc/BackupPC/config.pl ## BackupPC 缺省的傳輸方法。 $Conf{XferMethod} = 'rsync'; ## 備份數(shù)據(jù)存放位置的路徑。 $Conf{TopDir} = '/var/lib/backuppc'; ## init.d 內(nèi)用來引導(dǎo)服務(wù)器的路徑。 $Conf{ServerInitdPath} = '/etc/init.d/backuppc'; $Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start'; ## 你以 htpasswd 創(chuàng)建獲授權(quán)的用戶。 $Conf{CgiAdminUsers} = 'your_user';
設(shè)置 BackupPC Sudo
backuppc 這位用戶須要擁有 sudo 權(quán)限來執(zhí)行 gtar 及 tar 的指令。否則,BackupPC 便不能正確地運作。Sudo 應(yīng)該已被安裝在你的系統(tǒng)上,因此你可以通過 visudo 這個指令來作出所需的修改。
# visudo ## 注釋掉 Defaults requiretty ## 加入以下兩行。 Defaults !lecture backuppc ALL=NOPASSWD:/bin/gtar,/bin/tar
存儲并離開這個文件,然后重新引導(dǎo) Apache,引導(dǎo) BackupPC 并設(shè)置它在開機時引導(dǎo)。
# service httpd restart # service backuppc start # chkconfig backuppc on
請打開你的瀏覽器并進到位于 http://你的服務(wù)器/backuppc 的 BackupPC 網(wǎng)頁界面。你須要以先前創(chuàng)建的用戶及密碼來登錄,然后你便會看見一版關(guān)于 BackupPC 服務(wù)器一般信息的頁面。要不然,請重復(fù)你的步驟并確定 Apache 及 BackupPC 的設(shè)置皆正確。
BackupPC SSH 金鑰
由于我們會專注以 rsync 進行備份,你也許會想為 backuppc 進程創(chuàng)建無須密碼的金鑰,讓它能遠程連接到需要備份的主機上。請以 root 的身份在 /var/lib/backuppc 內(nèi)置立隱藏的 SSH 目錄,繼而修改權(quán)限。
# cd /var/lib/backuppc # mkdir .ssh # chown backuppc.backuppc .ssh # chmod 700 .ssh
接著,請改為 backuppc 這個用戶。你須要指定一個指令殼,因為 backuppc 這位用戶缺省是沒有指令殼的。然后請利用 ssh-keygen 創(chuàng)建沒有密碼的 SSH 金鑰。
# su -s /bin/bash backuppc bash-3.2$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/backuppc/.ssh/id_dsa. Your public key has been saved in /var/lib/backuppc/.ssh/id_dsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx backuppc@host.domain.name
#p#
復(fù)制服務(wù)器金鑰到客戶端
你必須將你服務(wù)器上創(chuàng)建的金鑰復(fù)制到每一臺要被備份的客戶端里。就此,請繼續(xù)上一步,在服務(wù)器上以 backuppc 這個用戶的身份執(zhí)行 ssh-copy-id 這個指令。
bash-3.2$ ssh-copy-id -i .ssh/id_dsa.pub root@host_to_backup
它應(yīng)該會將金鑰復(fù)制到主機里,并通過 SSH 把你登錄該臺機器。
設(shè)置客戶端
BackupPC 的基礎(chǔ)
在你開始使用網(wǎng)頁界面前,讓我們?yōu)閼?yīng)用于各主機的設(shè)置及選項提供一些基本的解釋。我所閱讀的其它指南在這方面都令我不知所措。你剛才所編輯的主要配置文件,位于 /etc/BackupPC/config.pl,藏有 BackupPC 的所有缺省值。這個配置文件可以在命令行上編輯,也可以通過為每個選項提供文檔的圖像界面來修改。你登錄網(wǎng)面界面時,在左邊可看見 Edit Config 這個頁簽。當你點擊它時,你其實在編輯 /etc/BackupPC/config.pl 這個文件。直至你閱讀文檔為止,請不要改動任何缺省的選項,否則你可能很快便會發(fā)現(xiàn)一個失效的備份系統(tǒng)。
雖然主要配置文件提供所有缺省值,你亦可以為個別主機更改這些設(shè)置。當你在網(wǎng)頁界面上加入一臺主機后,你為該主機所加入的任何設(shè)置值將會取代缺省值。這樣做亦會創(chuàng)建一個獨立的文件,/etc/BackupPC/pc/主機名稱.pl。這個文件藏有所有曾經(jīng)被修改,或與 /etc/BackupPC/config.pl 內(nèi)有差別的設(shè)置值。譬如說,這些文件的內(nèi)容會是你為某主機設(shè)置在備份時要包括或排除的目錄。
除非你將會在所有主機上備份相同的目錄,否則你在創(chuàng)建了一臺主機后便應(yīng)利用此功能來設(shè)置目錄。這一步可以通過 Xfer 頁簽上的 RsyncShareName 來完成。緊隨這個設(shè)置之下是 BackupFilesExclude 選項,讓你將 /var/cache 等目錄排除于備份之外。
在 BakcupSettings 這個主頁簽里,你會找到 DumpPreUserCmd。它容許你指定任何腳本在在進行目錄的 rsync 前被執(zhí)行。舉個例說,假如你需要令數(shù)據(jù)庫轉(zhuǎn)儲然后再備份,你可以在這個腳本里指定。SourceForge 上已然備有 AutoMySQLBackup,所以它在下一部份會有所描述。
DumPostUserCmd 容許你在備份后執(zhí)行一個指令,而 DumpPreShareCmd 及 DumpPostShareCmd 容許你在分享一個備份之前及之后執(zhí)行腳本。注:很多人似乎被這些設(shè)置里的參數(shù)所混淆。你不能將這些字段視作命令行或指令殼。指令殼語法在這里不會生效,因此你如果需要執(zhí)行多個指令或腳本,請將它們放進客戶端的一個腳本里,讓它們一個接一個地被執(zhí)行。
最后,你可以在 Schedule 這個頁簽設(shè)置如何進行完整及漸進式的備份。你可以在 Edit Config 將它設(shè)置為缺省級別,又或者為個別主機進行設(shè)置。缺省值是保留一套完整備份及六套漸進式的備份。這樣你便會擁有一個星期的備份。FullPeriod 的值是 6.97,意思即是每 7 日便進行一次完整備份。IncrPeriod 的值是 0.97,意思即是每日都進行漸進式備份。IncrKeepCnt 的值是 6,也就是說 6 日漸進式備份后,就有一日是完整備份。你也可設(shè)置 BlackoutPeriods,即是你不想進行備份的日子。這里的每個設(shè)置在文檔內(nèi)都有所解釋,因此這詳閱。
在網(wǎng)頁界面加入客戶端
接下來,請通過網(wǎng)頁界面加進客戶端及它的一切設(shè)置。請點擊 Edit Hosts 頁簽,繼而按 Add 按鈕。填入你想備份的主機名稱,然后在 User 部份之下,以 backuppc 作為用戶。這必須是 backuppc,因為備份是已這位用戶來引導(dǎo)的。其它設(shè)置都不行。完成后,請按頂部的 save 按鈕。當你點擊位于左面的 Host Summary 連結(jié)時,你應(yīng)該能看見你的新主機。要開始改動主機的設(shè)置,請點擊機名,然后一個新的本地將會在頂部打開。請點擊在主機名稱之下、最左上方的 Edit Config。
由此點起,你所做的一切修改將會取代缺省的設(shè)置值,并會被存儲到 /etc/BackupPC/pc/主機名稱.pl 這個文件內(nèi)。請點擊 Xfer 這個按鈕,然后開始在 RsyncShareName 下加入目錄。在它以下的 Include/Exclude 本地內(nèi),你可以將任何要排除的東西加進 BackupFilesExclude。完成后,請確定會已點擊在最頂部的 save。加入一臺主機大致上便是這樣。如果你選擇一臺主機,你可以手動式地開始及終止備份來檢查操作是否正常。
根據(jù)缺省值,BackupPC 會日以繼夜地、每小時醒來檢查是否有主機被排序作備份。要更改這個特性,請進到 Server configuration 頁簽下的 EditConfig 部份。請更改 WakeupScahedule 來迎合你的需要。
將數(shù)據(jù)庫備份
要在所備份的主機內(nèi)包含數(shù)據(jù)庫的轉(zhuǎn)儲,你有兩個選擇。第一,你可以寫一個在主機進行備份前執(zhí)行的腳本。第二,你可以利用 SourceForge 上的 AutoMySQLBackup 腳本計劃來轉(zhuǎn)儲你的 MySQL 數(shù)據(jù)庫。通過在腳本上作出簡單的修改,你可以輕易地令它支持 PostgreSQL 數(shù)據(jù)庫。開始時,請從 [http://sourceforge.net/projects/automysqlbackup|SourceForge] 下載腳本。請將這個腳本復(fù)制到要備份的主機,將它于在 /usr/local/bin 等位置。我一般會將該腳本換名來反映它所轉(zhuǎn)儲的主機名稱。
這一步并非必須,它只是較有邏輯而己。然而,你必須確定這個腳本是可執(zhí)行的。
# scp automysqlbackup.sh.2.5 host_name:/usr/local/bin # ssh host_name # mv automysqlbackup.sh.2.5 mysql_hostname_dump # chmod +x mysql_hostname_dump
這個腳本內(nèi)已包含所有選項的詳盡注釋。請你務(wù)必從頭閱讀一次,好讓你知道它在做什么。AutoMySQLBackup 連接到并轉(zhuǎn)儲所有你指定的數(shù)據(jù)庫到 /backups、發(fā)電郵給你(若設(shè)置了的話)、并且采用循環(huán)的方式來確定你擁有一組數(shù)據(jù)庫轉(zhuǎn)儲。
請確定你已填入 USERNAME、PASSWORD、及 DBNAMES。如果你想設(shè)置電郵,請遵照腳本內(nèi)的方法來進行設(shè)置。設(shè)置的過程非常簡單,因此當你把選項修改好,請在要被備份的主機上手動式執(zhí)行腳本一次。
這樣你可以檢查 /backups 這個目錄有否被創(chuàng)建,與及轉(zhuǎn)儲有否發(fā)生。
# cd /usr/local/bin # ./mysql_hostname_dump
……大量輸出……或錯誤……請據(jù)此作出修正。
# cd /backups # ll
你應(yīng)該會看見一個分開每日、每周、及每月的目錄結(jié)構(gòu),而每個數(shù)據(jù)庫的名稱又會以獨立目錄的型式出現(xiàn)在它們之內(nèi)。你可以遍歷這些目錄來找出對應(yīng)你的數(shù)據(jù)庫的 .sql.gz 文件。
為 BackupPC 主機加入 DumpPreUserCmd
既然轉(zhuǎn)儲用的腳本已經(jīng)實際地在主機上設(shè)置好,我們便可以在 BackupPC 的網(wǎng)頁界面設(shè)置 DumpPreUserCmd 要通過 SSH 連接到被備份的主機并執(zhí)行 AutoMySQLBackup。請在網(wǎng)頁界面選擇一臺主機,然后選擇位于左上方的 EditConfig 頁簽。選擇 BackupSettings 頁簽并進到 User Commands 以下部份。第一行便是 DumpPreUserCmd。
請在這部份加入下面數(shù)行。
$sshPath -q -x -l root $host /usr/local/bin/mysql_hostname_dump
選擇頂部的 save,然后進到主機的 Xfer 頁簽。請確定你在 RsyncShareName 內(nèi)加入 /backups 這個目錄,否則你的轉(zhuǎn)儲永遠不會從主機復(fù)制出來。這應(yīng)便完成了,現(xiàn)在你的主機的 MySQL 數(shù)據(jù)庫將會在 BackupPC 對目錄進行 rsync 前被轉(zhuǎn)儲。如上述所說,你可以簡易地編輯 AutoMySQLBackup 并改為一個 AutoPostgreSQLBackup 腳本。你只須將所有 MySQL 的語法改為 PostgreSQL 的指令及選項。
BackupPC 的其它功能
之前已經(jīng)提及,BackupPC 亦可以將 SMB 的共享資源備份、利用 tar 來進行備份、及將備份保存在其它媒體上。
BackupPC 的相關(guān)文檔對每個功能都有所解釋。
$Conf{XferMethod} = 'rsync';
The valid values are:
- 'smb': 通過 smbclient 及 SMB 通訊協(xié)議進行備份及撤消。
WinXX 的最簡單選擇。
- 'rsync': 通過 rsync(通過 rsh 或 ssh)進行備份及撤消。
linux/unix 的最佳選擇。亦是 WinXX 的好選擇。
- 'rsyncd': 通過客戶端上的 rsync 守護程序進行備份及撤消。
執(zhí)行著 rsyncd 的 linux/unix 客戶端的最佳選擇。亦是 WinXX
的好選擇。
- 'tar': 通過 tar 或在 ssh、rsh 或 nfs 里執(zhí)行的 tar 進行備份及撤消。
linux/unix 的一個好選擇。
- 'archive': 主機是臺特殊的存檔主機。備份不會進行。存檔主機是用來將其它
主機的備份保存到磁帶、CDR 或 DVD 等永久性媒體里。
【編輯推薦】