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