進(jìn)行一般的備份應(yīng)該是負(fù)責(zé)任的系統(tǒng)管理者的最高優(yōu)先考慮。雖然Linux 是一個(gè)高度可靠的作業(yè)系統(tǒng), 系統(tǒng)失效仍然可能發(fā)生。可能因?yàn)橛搀w故障,電源中斷,或其他不可預(yù)料的問(wèn)題。
更常見的這些問(wèn)題是來(lái)自人為的錯(cuò)誤,不當(dāng)?shù)淖儎?dòng),甚至因?yàn)閯h除重要的檔案。如果您負(fù)責(zé)管理系統(tǒng)上的用戶, 一定可能常被要求重建因?yàn)椴恍⌒恼`刪的檔案。
如果您進(jìn)行一般備份,以每日為基礎(chǔ)較好 (至少對(duì)更動(dòng)頻繁的使用者檔案),您將會(huì)有助於減少檔案的損失,并且增加復(fù)原程度。
最安全的備份方法是將他們紀(jì)錄於不同的媒體中,例如磁帶,抽取式硬碟,可寫式 cd .等。 然後將您的備份和您的 Linux系統(tǒng)分開存放。有時(shí)候這可能并不實(shí)際 -- 也許在您可以存放備份磁帶的地方?jīng)]有防火室 ! 或是在第一優(yōu)先的地點(diǎn)沒有辦法存取這樣的外部備份系統(tǒng)。雖然如此,仍然可以進(jìn)行備份,只是會(huì)受到一點(diǎn)限制。
在我服務(wù)的單位,我在幾個(gè) Linux 系統(tǒng)上進(jìn)行備份。按情況的不同,有些備份存放在磁帶,其他則寫入位於網(wǎng)路上的不同伺服器中,然而有一些仍然使用 cron 自動(dòng)作業(yè) (可能因?yàn)樗欧魑辉谶h(yuǎn)端,在那里每天進(jìn)行磁帶備份是不切實(shí)際或不可能的),簡(jiǎn)單的放在分別不同磁碟上的分割區(qū)中 (例如,放在 ``/archive/'' 檔案系統(tǒng)) 。
在家里,我沒有外部的備份系統(tǒng),我也沒有大量的磁碟空間去存放備份影像檔。因此,我改為只備份在``/home/'' 的我的使用者檔案,同樣的還有一些在 ``/etc/''的自訂設(shè)定檔,將備份存放在分別不同的磁碟分割區(qū)中。
伺服器備份程序
進(jìn)行Linux備份有幾種不同的方法,其中包括所有 Linux 發(fā)行版本中都有的命令列工具,例如 ``dd'', ``dump'', ``cpio''以及 ``tar''。其他還有文字型態(tài)工具,例如 ``Amanda'' 及 ``Taper'',這些是被設(shè)計(jì)來(lái)在備份及回存過(guò)程中加入更友善的使用者介面。當(dāng)然也有圖形介面的工具,像是``KDat''。最後,還有商業(yè)化的備份工具,像是 ``BRU'' 和 ``PerfectBackup+''。這些備份計(jì)劃中任何之一都足以提供您寶貴資料的保護(hù)。
這里有一些包括哪里可以獲得工具的列表,可以在“Linux Applications and Utilities Page”找到,位於http://www.xnet.com/~blatura/linapp2.html#back. 當(dāng)決定好備份方式,您可能要考慮下列幾點(diǎn)因素:
可攜性 - 備份的可攜性 (亦即. 從一個(gè) Linux 發(fā)行版本或應(yīng)用 Unix備份然後回存到另外一個(gè); 例如從Solaris 到 Red Hat Linux) 對(duì)您而言是否重要 ? 如果是,可能想要選擇一個(gè)命令列的工具 (亦即. ``dd'',``dump'', ``cpio'', 或 ``tar''),因?yàn)槟梢韵喈?dāng)?shù)卮_定該工具可以在另一個(gè) *nix 系統(tǒng)上找到。
無(wú)人或自動(dòng)備份 - 定期自動(dòng)進(jìn)行備份而不需人力介入之能力,對(duì)您而言是否重要 ? 如果是,您可能需要能支援該方案的工具及備份媒體。
使用者友善 - 使用者友善的介面對(duì)您而言是否重要 ? 如果是,您可能想要選擇一個(gè)文字或圖形介面的工具。商業(yè)的應(yīng)用程式可以提供最簡(jiǎn)便的介面及技術(shù)支援。
遠(yuǎn)端備份 - 從遠(yuǎn)端機(jī)器進(jìn)行備份及回存的能力對(duì)您而言是否重要 ? 如果是,您可能想要選擇命令列或文字模式的工具而不是圖形介面(除非您有相當(dāng)快的網(wǎng)路連結(jié)及執(zhí)行遠(yuǎn)端 X sessions 的能力)。
網(wǎng)路備份 - 從網(wǎng)路主機(jī)進(jìn)行備份及回存對(duì)您而言是否重要 ? 如果是,您可能要用一些支援從網(wǎng)路存取備份設(shè)備的命令列工具(像是 ``tar''),或是專用工具程式例如 ``Amanda'' 或是一些商業(yè)工具程式。
媒體型態(tài) - 備份可以儲(chǔ)存在很多不同的媒體,像是磁帶,外接式硬碟,ZIP 磁碟,或可讀寫 CD。考慮售價(jià)及可靠性,儲(chǔ)存容量,及傳送速度。
警告: 當(dāng)備份您的系統(tǒng)時(shí), 不要包括 ``/proc'' 偽檔案系統(tǒng) ! /proc 中的檔案并非真的檔案,而僅是看起來(lái)像檔案的描述,而且指向核心資料結(jié)構(gòu)的連結(jié)。備份 ``/proc/kcore'' ,這事實(shí)上這是一個(gè)偽裝檔案,包含記憶體中所有的資料,會(huì)浪費(fèi)很多的磁帶 ! 您可能也需要避免備份 ``/mnt'' 檔案系統(tǒng),除非您有從 CD-ROM,軟碟機(jī),網(wǎng)路分享檔案,或其他安裝設(shè)備上備份的特殊需求。
明顯地,備份及回存的過(guò)程會(huì)因您所選擇的備份方法而有所不同。然而,在這一節(jié),我將會(huì)討論我最常使用的兩種工具備份的方法 : ``tar'' (其名稱源於“Tape ARchiver”),這是一個(gè)命令列式的工具,在 *nix 系統(tǒng)中具有很高的可攜性 ; 以及 ``KDat'',一個(gè)來(lái)自於 KDE 套件的圖形介面磁帶備份工具。
最後,我應(yīng)該補(bǔ)充一點(diǎn),依您所選擇的備份方式,即使該工具沒有建立於自動(dòng)備份時(shí)間表上的能力,您仍然可以利用 cron 功能進(jìn)行該自動(dòng)備份。 參考使用Cron 和 Crontab 檔進(jìn)行自動(dòng)作業(yè) 有關(guān)使用 cron 的細(xì)節(jié)以及如何建立 crontab 行程表檔案。
使用 ``tar''備份:如果您選擇 ``tar'' 作為您的備份方案,您可能要花點(diǎn)時(shí)間去了解種種的指令選項(xiàng) ; 鍵入 “man tar” 有更深入的明細(xì)。您還需要了解如何存取適當(dāng)?shù)膫浞菝襟w ; 雖然在 Unix 的世界中對(duì)待所有的裝置就像處理檔案一樣,如果您寫入到一個(gè)字元設(shè)備像是磁帶,“檔案”的名稱就是設(shè)備本身的名稱 (亦即. ``/dev/nst0'' 是一個(gè)SCSI介面的磁帶機(jī))。
下面的指令會(huì)將您的整個(gè) Linux 系統(tǒng)備份於 ``/archive/'' 檔案系統(tǒng),除了 ``/proc/'' 偽裝檔案系統(tǒng),``/mnt/'', ``/archive/'' 檔案系統(tǒng) (沒必要備份我們的備份檔 !),還有 Squid 很大的快取資料檔 (是的,依我之見,浪費(fèi)備份媒體而且不需要去備份)之外的任何已掛載的檔案系統(tǒng) :
tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz
--directory / --exclude=mnt --exclude=proc --exclude=var/spool/squid .
不要被上面的指令嚇到 ! 當(dāng)我們將其分為兩部分,您將會(huì)發(fā)現(xiàn)這個(gè)強(qiáng)力工具之美。
上列的指令指定了選項(xiàng) ``z'' (壓縮; 備份資料經(jīng)由 ``gzip''壓縮), ``c'' (建立; 一個(gè) archive 檔開始被建立),``v'' (verbose; 顯示出已經(jīng)備份好的檔案), ``p'' (允許保存;保護(hù)的資料將會(huì)被 “記憶” ,可以被回復(fù))。``f'' (檔案) 選項(xiàng)後面接的是的要寫入的 archive 檔 (或裝置)名稱,注意包含資料的檔名是如何得到的,只要用兩個(gè)後引號(hào)將``date'' 指令圈起來(lái)。 一般的命名慣例是在未壓縮過(guò)的檔案後面加上 `` .tar'' ,壓縮的檔案加上 ``tar.gz'' ``--directory'' 選項(xiàng)告知 tar 在開始備份前首先跳到以下的檔案路徑 ( 在本例中是``/''目錄 )。 ``--exclude'' 選項(xiàng)告知 tar 不要備份所指定的檔案或目錄。最後, ``.'' 符號(hào)告知 tar 要備份目前目錄中的所有東西。
注意: 有一點(diǎn)很重要必須了解的就是 tar 的選項(xiàng)是大小寫不同的 ! 此外,大部分的選項(xiàng)可以用助記符號(hào)加以簡(jiǎn)化(亦即. ``f''), 或者使用較易記憶的選項(xiàng)全名 (亦即. ``file'')。 助記符號(hào)前用一個(gè)``-'' 字元作為字首作為辨識(shí),在全名的前面有兩個(gè)這種符號(hào)的字首。參考 “man”頁(yè)以得到更多有關(guān)使用 tar 的資訊。
另一個(gè)例子,這一次只有寫入指定的檔案系統(tǒng) (和上一個(gè)除了例外全部寫入的例子相反) 到一臺(tái) SCSI 的磁帶機(jī) :tar -cvpf /dev/nst0 --label="Backup set created on `date '+%d-%B-%Y'`." --directory / --exclude=var/spool/ etc home usr/local var/spool
在上面一行的選項(xiàng),注意沒有用到 ``z'' (壓縮) 選項(xiàng)。我強(qiáng)烈建議反對(duì)寫入壓縮資料到磁帶上,因?yàn)槿绻艓腺Y料有一部份損壞,您會(huì)失去整個(gè)備份 ! 然而,未壓縮的儲(chǔ)存的 archive 檔具有很高的可恢復(fù)性,即使磁帶上的檔案有一部份損毀。
因?yàn)榇艓C(jī)是一個(gè)字元設(shè)備,沒有辦法指定一個(gè)確實(shí)的檔名。因此,指定給 tar 的檔名可簡(jiǎn)化為裝置名稱,``/dev/nst0'',是在 SCSI 排匯上的第一個(gè)磁帶設(shè)備。
注意: ``/dev/nst0'' 設(shè)備在備份做好後不會(huì)回帶 ; 因此有可能將好幾組備份寫到同一磁帶。(您也可以選擇``/dev/st0''這個(gè)裝置,在這種情形磁帶在備份完後會(huì)自動(dòng)回帶)
既然我們無(wú)法對(duì)一套備份指定檔名, ``--label'' 選項(xiàng)可以來(lái)寫進(jìn)檔案本身一些有關(guān)這一套備份的資訊。
最後,只有包含在 ``/etc/'', ``/home/'', ``/usr/local'', 及 ``/var/spool/'' (除了 Squid 的 快取資料檔)會(huì)寫進(jìn)磁帶。
當(dāng)使用磁帶時(shí),可以使用下列命令回帶,以及退出磁帶:
mt -f /dev/nst0 rewind
mt -f /dev/nst0 offline
小技巧: 您將會(huì)發(fā)現(xiàn)到當(dāng) archive 檔建立時(shí),前面的``/'' (斜線) 符號(hào)會(huì)被 tar 去除。這是 tar 的預(yù)設(shè)操作模式, 這是故意用來(lái)保護(hù)您避免覆寫這些重要檔案的原先版本,以防萬(wàn)一您不慎在重建過(guò)程中覆寫了不正確的檔案。
如果您真的不喜歡這個(gè)特性 (記住,這是特性!) 您可以指定 tar ``--absolute-paths'' 選項(xiàng),這樣會(huì)保留前面的斜線。然而,我不建議這樣做,因?yàn)楹芪kU(xiǎn) !
使用``KDat''備份: 如果您使用 KDE 桌面環(huán)境,我相信您會(huì)發(fā)現(xiàn)``KDat'' 公用程式不但強(qiáng)大而且對(duì)使用者很友善。此外,另一個(gè)好處是KDat 利用``tar'' 作為其備份 engine。因此,用 KDat 寫入的備份組不但可以用 KDat 讀取,也可以用 tar ! 這使得 KDat 成為在使用者友善及備份可攜性中很好的選擇。
小技巧:即使您決定不使用也不安裝完整的 KDE 套件,如果您安裝了 Qt 函式館就仍然可以使用KDE。
當(dāng)您第一次執(zhí)行 KDat,您需要建立一個(gè)備份 profile。這個(gè) profile 告訴 KDat 您想要備份系統(tǒng)中的哪些檔案。如果您要的話,您可以建立好幾個(gè)備份 profile,依照您的需求 (例如,您可以建立一個(gè) profile 叫做“Full Backup”作系統(tǒng)的完全備份,或是 “Quick Backup”只備份使用者的檔案)。
要建立備份 profile,可以選擇從選單欄中“File”選項(xiàng)選擇“Create Backup Profile” (或在“Backup Profiles”文件夾上按滑鼠右鍵,然後選擇 “Create Backup Profile”)。在右手邊的是 KDat 視窗,您可以改變各種設(shè)定,像是profile 名稱,archive 名稱, tar 選項(xiàng), 以及其他的。單擊 “Help” 選單有關(guān)於這些設(shè)定的用途說(shuō)明。
要指定哪些檔案應(yīng)該包含在您的 backup profile, 在 ``/'' 目錄文件夾旁的核對(duì)圖示上敲一下左鍵。這會(huì)確定所有的檔案及這個(gè)目錄下所有東西都會(huì)備份。然後,在文件夾旁的小 ``+''符號(hào)上敲一下左鍵,資料夾會(huì)展開,顯示檔案及以下的目錄。您可以排除掉所不想備份的檔案;只要在您想排除的每一個(gè)檔案或目錄旁的核對(duì)符號(hào)上敲一下左鍵。例如,一個(gè)完全備份應(yīng)該包含已標(biāo)記的所有檔案及目錄,要排除 ``/proc'' (一個(gè)偽裝檔案系統(tǒng),包含您目前運(yùn)作系統(tǒng)的資料),``/mnt'' ( 位於CD-ROM下面的目錄,軟碟機(jī),網(wǎng)路分享常被掛載在此),而且如果您是 Squid 使用者,``/var/spool/squid'' (Squid的快取資料檔)。一旦您選好了合適的檔案,在您建立好的備份 profile 上按一下左鍵,然後在“Files >>” 鈕上按一下左鍵將選好的檔案移進(jìn)您的備份 profile。
注意: 如果您的伺服器資料到巨大到無(wú)法實(shí)際存放到磁帶中,您需要建立分別的備份 profiles,備份組中每部份一個(gè)。
實(shí)際進(jìn)行備份時(shí),將磁帶放入,從 “File” 選單中選擇 “Mount Tape” (或是用滑鼠敲一下看起來(lái)像磁帶的圖示)。
這樣會(huì) “掛載” 磁帶 (事實(shí)上,因?yàn)榇艓C(jī)是字元裝置,事實(shí)上無(wú)法掛載它 -- 其實(shí) KDat 只是先回帶,試著去讀取開頭資訊,如果成功,找尋磁帶機(jī)上符合的索引。否則,KDat 會(huì)提醒您格式化磁帶。
(注意: 如果 KDat 持續(xù)反映沒有磁帶在磁帶機(jī)但事實(shí)上有,您應(yīng)該確定在參數(shù)中指定的磁帶機(jī)名稱正確,在選單欄中用滑鼠敲一下 “Edit” 選項(xiàng)然後選擇“User Preferences”.)
一旦 KDat 已經(jīng)掛載好磁帶,在您開始備份前必須選擇備份的 profile。當(dāng)打算開始備份,只要在您要的備份 profile上敲一下右鍵,然後在“Backup”上敲一下左鍵。KDat 會(huì)先顯示一個(gè)對(duì)話框告訴您有關(guān)您所選擇備份 profile 的細(xì)節(jié) ;在“Ok” 上敲一下左鍵就會(huì)開始備份。
當(dāng)備份開始進(jìn)行,KDat 會(huì)顯示一個(gè)有各種狀態(tài)資訊的對(duì)話框 (經(jīng)過(guò)時(shí)間,備份大小,備份比率,估計(jì)剩馀時(shí)間,檔案數(shù)量及總共寫入 bytes 數(shù)),以及已經(jīng)備份檔案的列表。一個(gè)包含好幾 gigabyte 資料的完全備份可能需要花上好幾個(gè)小時(shí)。必要的話,在備份過(guò)程中任何時(shí)候您可以在“Abort” 鈕上敲一下左鍵放棄備份。
一旦備份完成,您可以在選單欄中選擇 “Edit”,再選 “Unmount Tape”以解掛載磁帶,或在磁帶圖示上敲一下,這樣磁帶會(huì)回帶然後跳出。
無(wú)疑地, 比例行備份更重要的事就是當(dāng)問(wèn)題發(fā)生後能讓重要檔案正常回復(fù) !
明顯地,就像伺服器備份程序所討論的,進(jìn)行回存的程序依您所選擇的備份方案而有所不同。在這一節(jié),我將會(huì)討論由 ``tar'' 及 ''KDat''所備份的回存方法。
使用 ``tar'' 回存:
下面的指令會(huì)從 ``full-backup-09-October-1999.tar.gz'' 回存所有的檔案,這是我們 Linux 系統(tǒng)的備份例 (按照在 使用``tar'' 備份 一節(jié)中的命令例所做的):tar -zxvpf /archive/full-backup-09-October-1999.tar.gz
上面的命令會(huì)從 archive 檔中取出所有的檔案,保留原檔案的擁有者及權(quán)限。 ``x'' 選項(xiàng)用來(lái)作解出(其他的選項(xiàng)在 使用``tar'' 備份 這節(jié)中有提到:)
警告: 從一個(gè) tar 的 archive檔中解出檔案可能是一件危險(xiǎn)的事,因此必須謹(jǐn)慎進(jìn)行。也許這些檔案作時(shí)并未包括準(zhǔn)備好的路徑 (有一些被誤導(dǎo)或未被告知的發(fā)展者散他們的檔案時(shí)可能會(huì)這樣),表示檔案會(huì)被解到目前的目錄下。也許檔案壓縮時(shí)有加上 ``/'' 斜線 (當(dāng)備份檔建立時(shí)指定 ``--absolute-paths'' 選項(xiàng)),表示檔案會(huì)被回存到絕對(duì)位置 (即使您不愿意)。或者也許檔案壓縮時(shí)未加上 ``/'' 斜線, 表示檔案會(huì)被解到目前的目錄下 (即使您不愿意這樣)。當(dāng)然,全看備份是如何建立的。因?yàn)檫@個(gè)緣故,我強(qiáng)烈建議先在 ``tar''命令加上``t'' (type) 選項(xiàng)加以測(cè)試,然後當(dāng)您完全確定命令會(huì)依您預(yù)期進(jìn)行後將 ``t'' 換成``x'' (extract) 。
如果您不需要回存 archive 中所有的檔案,您可以指定一個(gè)或更多的檔案,按照下面例 :
tar -zxvpf /archive/full-backup-09-October-1999.tar.gz etc/profile usr/local/bin/tolower
上面的命令會(huì)從例的檔案回存 ``etc/profile'' 及 ``usr/local/bin/tolower''
如果您只試著從您的 archive 檔中回存一個(gè)或幾個(gè)檔案,除非您確實(shí)地指定和 archive 檔中所存放相同的檔名及路徑,否則不會(huì)成功。 下面的例會(huì)幫您解決問(wèn)題:
tar -ztvpf /archive/full-backup-09-October-1999.tar.gz | grep -i profile
在上面的例,所有在 archive 檔中的檔案都以檔名列出。所有的結(jié)果都會(huì)輸出到 ``grep'' 指令 (使用 grep的``i'' 選項(xiàng)可忽略混雜的情況),顯示``profile''中任何檔案的目錄及檔名。當(dāng)您確實(shí)決定要回存的檔名時(shí),您可以用一般的 tar 指令表達(dá)指定所要回存的檔案。
就像在 伺服器備份程序 所提到的,當(dāng)建立一個(gè) archive 檔時(shí), tar 會(huì)從檔案路徑去除前面的 ``/'' (斜線)符號(hào)。
這表示檔案回存時(shí)可能不會(huì)在和備份時(shí)相同的位置結(jié)束。因此,不要改變到 ``/'' root 目錄或者``--directory /'' 選項(xiàng)。
注意: 一個(gè)更安全的方法是在不同的目錄回存檔案 (例如您的 home 目錄),然後比對(duì),搬移及更新檔案到之後的原始位置。
使用``KDat''回存:
要從 KDat 建立的備份組回存一個(gè)或更多檔案,將備份磁帶放進(jìn)磁帶機(jī),從“File”選單項(xiàng)目選擇“Mount Tape”(或在磁帶的圖示上按下滑鼠左鍵) KDat 會(huì)試著從磁帶讀入開頭資訊,如果成功的話,會(huì)試著找尋符合開頭資訊的磁帶索引。這個(gè)索引存在硬碟,是由 KDat 為所格式化的每一個(gè)備份磁帶所做的唯一檔案,每一次進(jìn)行備份就會(huì)更新。如果符合的檔案索引遺失了(也許您回存的備份組是由另一部機(jī)器所備份的,或是因?yàn)橛驳鷵p毀而刪除了索引檔), KDat 會(huì)通知您這件事,并且如果可以讀取磁帶重建索引的話會(huì)詢問(wèn)您。由於您必須在您回存檔案前先重建索引,按左鍵選擇“Yes”是有意義的。
(注意: 一但磁帶重新索引過(guò),名稱會(huì)變成“Reindexed Tape”。 您可以將它重新命名成原來(lái)的樣子)
當(dāng)磁帶索引成功地讀入,可以用來(lái)選擇您想從備份組回存的檔案或目錄,和您建立備份檔時(shí)所用的方法十分相同(查看 伺服器備份程序 有關(guān)選擇檔案過(guò)程的詳細(xì)說(shuō)明)。
當(dāng)您選擇好合適的檔案,您可以從目錄頁(yè)中的“File”選項(xiàng)選擇“Restore...”開始回存程序 (或在磁帶回存的圖示上按滑鼠左鍵)。KDat會(huì)顯示一個(gè)對(duì)話框,讓您確認(rèn)要回存的檔案。此外,您有指定回存的檔案所到目錄的選項(xiàng)。這讓您回存重要檔案到您的 home 目錄下,然後可以和預(yù)期位置中的檔案做比較,移動(dòng)或是更新。這實(shí)際上是最安全的回存檔案方法。
要開始回復(fù)程序,在“Okay”鈕上按一下,KDat 會(huì)掃描磁帶并且開始回存選定好的檔案。
有時(shí),您會(huì)發(fā)現(xiàn)不使用 KDat 回存一個(gè)用 KDat 備份過(guò)的檔案是必須或有幫助的。也許您想要在不提供圖形介面的系統(tǒng)上回存這些檔案,或是您的網(wǎng)路速度很慢而透過(guò)它執(zhí)行 KDat 是不切實(shí)際。幸運(yùn)地, KDat 使用 ``tar'' 工具寫入備份資料, 在任何 *nix 系統(tǒng)都有的命令列工具。
如果您打算用 tar 回存用 KDat 建立的備份組,就像您回存用 tar 本身備份的普通備份組所做的選項(xiàng)一樣。記住,資料組并未以壓縮格式儲(chǔ)存。
注意: 當(dāng)您試著使用 tar 存取由 KDat 所做的備份組時(shí),一定會(huì)得到錯(cuò)誤訊息。這是因?yàn)楫?dāng)磁帶第一次格式化時(shí) KDat 加入了開頭及其他資訊。重 tar 指令兩三次就會(huì)跳到檔案真正開頭的地方。