Linux服務器數據備份恢復策略

一、Linux 備份恢復基礎
1、什麼是備份
最簡單的講,備份數據的過程就是拷貝重要的數據到其他的介質之上(通常是可移動的),以保證在原始數據丟失的情況下可以恢復數據。一次備份可能是簡單的 cp命令,將一個文件複製到其他目錄下,也可能是使用特定的程序將數據流寫進一個特定的設備中的複雜過程。很多情況下是將要備份的數據寫入到磁帶機中,但有些情況也不是這樣的。在Linux環境下,或其他Unix系統,備份可以是將文件拷貝到已存在的文件系統,可替換的文件系統,磁帶機,遠程文件系統,甚至是遠程系統的上的磁帶機。當然,從用戶的角度來看,並不存在磁帶機或RAID驅動器的概念,而僅僅是文件而已。如下的諸多因素將有可能導致系統的崩潰或數據丟失。
    * 系統硬件故障 
* 軟件故障
* 電源故障
* 用戶的誤操作
* 人爲破壞
* 緩存中的內容沒有及時的寫入磁盤
2、備份的重要性
備份是保護數據的一種方法。有數據的多個備份,就不怕某個損壞(所需做的僅僅是從備份中恢復丟失的數據)。因此,正確地做好備份並確保備份有效、可用是很重要的。由於硬件的損壞、人爲誤操作和災難事件等造成的數據丟失是每個企業所需要避免的,其中最常用的方法是進行數據備份。數據備份的重要性是如何強調都不過分的,如果企業認爲數據的丟失是不可接受的,那麼請備份這些數據。並對備份數據和出現數據丟失後進行恢復工作需要的時間,以及花費的成本進行綜合評估。如果數據的離線備份仍然不能滿足企業運作連續性的需要,那麼企業就需要考慮在線實時備份,即本地高可用性集羣或異地災難備份方案。
二、 Linux服務器數據備份恢復策略
1、備份前需考慮的因素
在對系統進行備份或者恢復操作之前,有幾個因素必須先考慮清楚。當然,進行備份操作的一個最佳時機就是安裝好Linux操作系統,並確信所有的設備(如聲卡、顯卡或者磁帶機等) 都能夠正常工作的時候。必須清楚備份和檔案文件之間是有區別的。備份是定期進行的操作,用來保存重要的文檔、文件或者整個系統;而對文件歸檔則是爲了長期保存重要的文檔、文件或者整個系統進行的操作。要進行成功的備份,就必須首先考慮到所有的因素並設計出一個進行備份操作的策略,例如:
 ● 可移植性(即在Red Hat Linux系統下執行的備份在另外一個系統上恢復的能力)。
● 是否自動備份。
● 執行備份的週期。
● 需要把歸檔的備份保存多長時間。
● 用戶界面的友好性(決定是否需要選擇基於GUI界面的工具還是基於文本的)。
● 是否需要使用壓縮技術、直接複製或者加密技術。
● 備份介質(需要從價格、性能、存儲能力上考慮)。
● 是否遠程備份或網絡備份。
● 是保存一個文件、一個子目錄還是整個系統。
2、備份介質的選擇
有很多介質可以用來進行備份。目前3種常用的備份介質是CD-R(DVD-R)、磁帶和硬盤。下面介紹一些可選擇的備份介質:
軟盤
如果要把重要文件快速備份,或者將其帶到家中,這時軟盤仍舊是一種可選的備份介質(現在該介質已經步入淘汰階段)。
光盤寫入器
隨着光盤寫入器變得越來越可靠,價格也越來越低,光盤本身也非常便宜。選用此項的一個好處是光盤不容易被損壞,它備份的可靠性很高。 用光盤寫入器有兩點不利因素:它們速度較慢,並且只能保存大約650MB。
可重寫的光盤
可重寫光盤驅動器比光盤寫入器要貴得多,工作方式與其類似。但是,這些光盤是可被重寫的,並且它比只能寫一次的光盤貴許多。可重寫光盤其它的特性都與光盤寫入器類似。
Jaz和Zip
Zip驅動器很流行,已經成爲許多PC機的標準配置,同時它的磁盤和驅動器也都不貴。它一張磁盤可容納100MB的數據,是一種用於快速、可移動備份的很好選擇。
Jaz磁盤可以容納上G字節的數據,並且使用更先進的技術以獲得更好的表現。Jaz驅動器和Jaz磁盤都比較貴。 Jaz和Zip的缺陷是都容易損壞,並且保持時間相對要短。
磁帶機
磁帶備份設備是大多數Linux服務器的標準配置。磁帶是可靠的,並且很少出現錯誤,它幾乎比其它介質存儲時間都要長。
對於點對點工作組網絡和中型網絡,Travan和高端數字音頻磁帶(DAT)通常是最好的選擇。Travan驅動器經過壓縮可以處理8GB數據,這對於具有5-10個PC機的小型網絡來說足夠了。DAT驅動器有更好的表現,可以處理24GB的數據。DAT驅動器比Travan驅動器昂貴,但它磁帶的價格要比Travan QIC磁帶卷便宜。 表1中對介質(包括一些新的介質,如只讀光盤和可讀寫光盤)在可靠性、速度、可用性和易用性方面進行了評價。
選擇備份介質時,要從可靠性、速度、費用、易保管性等方面綜合考慮。
三、Linux 備份策略
選擇了存儲備份軟件、存儲備份技術(包括存儲備份硬件及存儲備份介質)後,首先需要確定數據備份的策略。備份策略指確定需備份的內容、備份時間及備份方式。各個單位要根據自己的實際情況來制定不同的備份策略。目前被採用最多的備份策略主要有以下三種。
1、完全備份(full backup)
每隔一段時間對系統進行一次完全的備份,這樣在備份時間間隔內,一旦系統發生故障使得數據丟失時,就可以用上一次的備份數據恢復到上一次備份時的情況。例如,星期一用一盤磁帶對整個系統進行備份,星期二再用另一盤磁帶對整個系統進行備份,依此類推。這種備份策略的好處是:當發生數據丟失的災難時,只要用一盤磁帶(即災難發生前一天的備份磁帶),就可以恢復丟失的數據。然而它亦有不足之處,首先,由於每天都對整個系統進行完全備份,造成備份的數據大量重複。這些重複的數據佔用了大量的磁帶空間,這對用戶來說就意味着增加成本。其次,由於需要備份的數據量較大,因此備份所需的時間也就較長。對於那些業務繁忙、備份時間有限的單位來說,選擇這種備份策略是不明智的。
優點:備份的數據最全面、最完整。恢復快,當發生數據丟失的災難時,只要用一盤磁帶就可以恢復全部的數據。
缺點:數據量非常大,佔用備份的磁帶設備比較多,備份時間比較長。
2、增量備份(incremental backup)
首先進行一次完全備份,然後每隔一個較短時間進行一次備份,但僅備份在這個期間更改的內容。這樣一旦發生數據丟失,首先恢復到前一個完全備份,然後按日期逐個恢復每天的備份,就能恢復到前一天的情況。例如在星期天進行一次完全備份,然後在接下來的六天裏只對當天新的或被修改過的數據進行備份。這種備份策略的優點是節省了磁帶空間,縮短了備份時間。但它的缺點在於,當災難發生時,數據的恢復比較麻煩。例如,系統在星期三的早晨發生故障,丟失了大量的數據,那麼現在就要將系統恢復到星期二晚上時的狀態。這時系統管理員就要首先找出星期天的那盤完全備份磁帶進行系統恢復,然後再找出星期一的磁帶來恢復星期一的數據,然後找出星期二的磁帶來恢復星期二的數據。很明顯,這種方式很繁瑣。另外,這種備份的可靠性也很差。在這種備份方式下,各盤磁帶間的關係就象鏈子一樣,一環套一環,其中任何一盤磁帶出了問題都會導致整條鏈子脫節。比如在上例中,若星期二的磁帶出了故障,那麼管理員最多隻能將系統恢復到星期一晚上時的狀態。
優點:備份速度快,沒有重複的備份數據,節省磁帶空間,又縮短了備份時間。
缺點:恢復時間長。如果系統在星期四的早晨發生故障,管理員需要找出從星期一到星期三的備份磁帶進行系統恢復。各磁帶間的關係就像鏈子一樣,一環套一環,其中任何一盤磁帶出了問題,都會導致整條鏈子脫節。
3、差分備份(differential backup)
首先每月進行一次完全備份,然後備份從上次進行完全備份後更改的全部數據文件。一旦發生數據丟失,使用一個完全備份和一個差分備份就可以恢復故障以前的狀態。管理員先在星期天進行一次系統完全備份,然後在接下來的幾天裏,管理員再將當天所有與星期天不同的數據(新的或修改過的)備份到磁帶上。差分備份策略在避免了以上兩種策略的缺陷的同時,又具有了它們的所有優點。首先,它無需每天都對系統做完全備份,因此備份所需時間短,並節省了磁帶空間,其次,它的災難恢復也很方便。系統管理員只需兩盤磁帶,即星期一磁帶與災難發生前一天的磁帶,就可以將系統恢復。
增量備份可以減少備份時間,有效地利用處理器資源和備份I/O帶寬,而完全備份在恢復上有很大的優勢。現在一些企業備份管理軟件提供了一個折衷的辦法:將一個基本完全備份和幾個增量備份合成爲一個較新的“完全備份”。合成的完全備份是通過整合完全備份和增量備份的內容,隨後寫入不同的介質生成新備份。這個新的合成完全備份成爲以後增量備份的基準。
合成完全備份從物理資源(磁帶、磁帶驅動器和帶寬)和時間來看消耗很大,但是簡化了恢復過程。
在實際應用中,備份策略通常是以上幾種的結合。例如每週一至週六進行一次增量備份或差分備份,每週日進行全備份,每月底進行一次全備份,每年底進行一次全備份。
4、確定要備份的內容
在備份和還原系統時,Linux 基於文件的性質成了一個極大的優點。在 Windows 系統中,註冊表與系統是非常相關的。配置和軟件安裝不僅僅是將文件放到系統上。因此,還原系統就需要有能夠處理 Windows 這種特性的軟件。在 Linux 中,情況就不一樣了。配置文件是基於文本的,並且除了直接處理硬件時以外,它們在很大程度上是與系統無關的。硬件驅動程序的現代方法是,使它們以動態加載的模塊的形式可用,這樣內核就變得更加與系統無關。不同於讓備份必須處理操作系統如何安裝到系統和硬件上的複雜細節,Linux 備份處理的是文件的打包和解包。
一般情況下,以下這些目錄是需要備份的:
• /etc
包含所有核心配置文件。這其中包括網絡配置、系統名稱、防火牆規則、用戶、組,以及其他全局系統項。
• /var
包含系統守護進程(服務)所使用的信息,包括 DNS 配置、DHCP 租期、郵件緩衝文件、HTTP 服務器文件、db2 實例配置,等等。
• /home
包含所有用戶的默認用戶主目錄。這包括他們的個人設置、已下載的文件和用戶不希望失去的其他信息。
• /root
是根(root)用戶的主目錄。
• /opt
是安裝許多非系統文件的地方。IBM 軟件就安裝在這裏。OpenOffice、JDK 和其他軟件在默認情況下也安裝在這裏。
有些目錄是應該考慮不 備份的。
• /proc
應該永遠不要備份這個目錄。它不是一個真實的文件系統,而是運行內核和環境的虛擬化視圖。它包括諸如 /proc/kcore 這樣的文件,這個文件是整個運行內存的虛擬視圖。備份這些文件只是在浪費資源。
• /dev
包含硬件設備的文件表示。如果計劃還原到一個空白的系統,那就可以備份 /dev。然而,如果計劃還原到一個已安裝的 Linux 系統,那麼備份 /dev 是沒有必要的。
其他目錄包含系統文件和已安裝的包。在服務器環境中,這其中的許多信息都不是自定義的。大多數自定義都發生在 /etc 和/home 目錄中。包括:
在 UNIX 或 Linux 系統中,大部分系統配置文件位於 /etc 目錄,但是您應該考慮對所有可能的文件(以及可能的位置)進行備份,具體包括:
    DNS 域信息 (/var/bind) ;
NIS/NIS+ 文件和配置 (/var/yp)
Apache 或其他 Web 服務器配置(/var/apache、/etc/apache 或 /usr/local/apache) ;
郵件文件或文件夾(/var/mail 和 /usr/mail)
Lightweight Directory Access Protocol (LDAP)
服務器數據(/var/ldap 或 /usr/local/ldap) ;
安全證書 ;
自定義內核驅動程序 ;
內核配置或構建配置和參數 ;
許可密鑰和序列號 ;
自定義腳本和應用程序 ;
用戶/root 登錄腳本 ;
郵件配置;

特別是,如果您使用了像 Cyrus Internet Message Access Protocol (IMAP) 這樣的解決方案,其中對用戶郵件文件夾進行了特殊的記錄和索引。
5、 Linux 常用備份恢復命令
a)tar
tar工具是以前備份文件的可靠方法,幾乎可以工作於任何環境中,Linux老用戶一般都信賴它。 Linux中以.tar結尾的文件都是用tar創建的。它的使用超出了單純的備份,可用來把許多不同文件放到一起組成一個易於分開的文件。tar是從 Tape ARchiver備份工具起步的。 tar是一個基於文件的命令,它本質上是連續地、首尾相連地堆放文件。使用tar可以打包整個目錄樹,這使得它特別適合用於備份。歸檔文件可以全部還原,或從中展開單獨的文件和目錄。備份可以保存到基於文件的設備或磁帶設備上。文件可以在還原時重定向,以便將它們重新放到一個與最初保存它們的目錄(或系統)不同的目錄(或系統)。tar是與文件系統無關的,它可以使用在ext2、ext3、jfs、 Reiser和其他文件系統上。
tar命令格式
    備份:tar <選項> <-cf 備份文件或設備> <備份路徑>
恢復:tar <選項> <-xf 備份文件或設備> [-C 恢復路徑]
常用選項:
    -M:分卷處理
-p:保留權限
-T filename:指定備份文件列表
-N DATE:備份指定日期之後修改的文件
-z:用GNU的gzip壓縮文件或解壓。
-Z:用compress壓縮文件或解壓。
-j:用bzip2壓縮文件或解壓。
tar 命令操作舉例
1. 跨越多張軟盤備份系統/usr/local下的所有內容,同時進行寫入校驗
# tar -cWMf /dev/fd0 /usr/local
2. 備份/目錄下自04/11/2006改過的文件到磁帶設備/dev/st0中
# tar -cvf /dev/st0 -N 04/11/2006
3.保持文件權限備份/目錄(不包括/proc)到磁帶設備/dev/st0中
# tar -cpf /dev/st0 / --exclude=/proc
4. 恢復恢復備份到/
# tar -xpf /dev/st0 -C /
5.從備份文件恢復指定的文件etc/passwd
# tar -xpf /dev/st0 etc/passwd
6.做一個完全備份
# tar -zcvf /backup/bp_full.tar.gz /
7.每隔7天做增量備份
# tar -c -T /tmp/filelist -f /backup/bp_add.tar.gz
b)cpio命令
GNU cpio工具像tar一樣從命令提示行啓動程序。與tar相比cpio更復雜,但是也更爲可靠。因爲如果一個tar文件中某處有一個壞塊,就不能對備份文件的其它部分進行訪問,而使用cpio,只有壞塊不能被訪問。 cpio創建一個稱爲copy-out mode的備份,備份存檔中包含了文件和所有者、時間及訪問許可等信息。cpio需要一個假定要備份的文件列表。創建列表的一個最方便的方法就是使用ls 命令。
cpio 命令操作舉例
1. 拷貝當前目錄中所有文件到磁帶設備 /dev/rmt0,輸入:
    find . | /usr/sysv/bin/cpio -oc >/dev/rmt0
2. 從 cpio 歸檔中只抽取一個常規文件中的文件列表,使用下列命令:
    cat ar | /usr/sysv/bin/cpio -i -E Efile

3. 把/home目錄備份到SCSI磁帶設備中,輸入下面的命令:
    $ls /home | cpio -o > /dev/st0
你也可以對cpio的備份進行計劃,用crontab工具設置成基於任何時間的有規律地運行。例如,要在每晚2點把/ home目錄備份到SCSI磁帶驅動器中,把下面的語句添加到root的crontab文件中即可:

00 02 * * * ls /home | cpio -o > /dev/st0

C)dump
dump爲備份工具程序,可將目錄或整個文件系統備份至指定的設備,或備份成一個大文件。dump 可以執行類似 tar 的功能。然而,dump 傾向於考慮文件系統而不是個別的文件。下面是引自 dump 手冊文件中的內容:“dump 檢查 ext2 文件系統上的文件,並確定哪些文件需要備份。這些文件將出於安全保護而被複制到給定的磁盤、磁帶或其他存儲媒體上……大於輸出媒體容量的轉儲將被劃分到多個卷。在大多數媒體上,容量是通過一直寫入直至返回一個 end-of-media 標記來確定的。”
dump命令格式:
dump [-cnu][-0123456789][-b <區塊大小>][-B <區塊數目>][-d <密度>][-f <設備名稱>][-h <層級>][-s <磁帶長度>][-T <日期>][目錄或文件系統] 或 dump [-wW]
主要選項:
 -0123456789  備份的層級。
 -b<區塊大小>  指定區塊的大小,單位爲KB。
 -B<區塊數目>  指定備份卷冊的區塊數目。
 -c  修改備份磁帶預設的密度與容量。
 -d<密度>  設置磁帶的密度。單位爲BPI。
 -f<設備名稱>  指定備份設備。
 -h<層級>  當備份層級等於或大雨指定的層級時,將不備份用戶標示爲"nodump"的文件。
 -n  當備份工作需要管理員介入時,向所有"operator"羣組中的使用者發出通知。
 -s<磁帶長度>  備份磁帶的長度,單位爲英尺。
 -T<日期>  指定開始備份的時間與日期。
 -u  備份完畢後,在/etc/dumpdates中記錄備份的文件系統,層級,日期與時間等。
 -w  與-W類似,但僅顯示需要備份的文件。
 -W  顯示需要備份的文件及其最後一次備份的層級,時間與日期。

dump命令操作舉例:
1.執行一個完全 Linux 備份,它把所有 ext2 和 ext3 文件系統備份到一個 SCSI 磁帶設備。
    dump 0f /dev/nst0 /boot
dump 0f /dev/nst0 /
說明:在這個例子中,系統中有兩個文件系統。一個用於 /boot,另一個用於 / ,這是常見的配置。它們必須在執行備份時單獨地引用。 /dev/nst0 引用第一個 SCSI 磁帶驅動器,不過是以非重繞的模式引用。這樣確保各個卷在磁帶上一個接一個地排列。dump 的一個有趣特性是其內置的增量備份功能。在上面的例子中,0 表示 0 級或基本級備份。這是完全系統備份,您要定期執行以保存整個系統。對於後續的備份,您可以使用其他數字(1-9)來代替 0,以改變備份級別。1 級備份會保存自從執行 0 級備份以來更改過的所有文件。2 級備份會保存自從執行 1 級備份以來更改過的所有文件,以此類推。使用 tar 和腳本可以執行相同的功能,但要求腳本創建人員提供一種機制來確定上次備份是何時執行的。dump 具有它自己的機制,即它在執行備份時會輸出一個更新文件(/etc/dumpupdates)。這個更新文件將在每次執行 0 級備份時被重設。後續級別的備份會保留它們的標記,直至執行另一次 0 級備份。如果您在執行基於磁帶的備份,dump 會自動跟蹤多個卷。
2. 配合使用 find 命令複製整個目錄
    $ find . |cpio -ov >archive.cpio 
d) restore命令
配合 dump 的程序是 restore,它用於從轉儲映像還原文件。restore 命令執行轉儲的逆向功能。可以首先還原文件系統的完全備份,而後續的增量備份可以在已還原的完全備份之上覆蓋。可以從完全或部分備份中還原單獨的文件或者目錄樹。
Restore命令舉例
從磁帶備份中提取 /etc 目錄,可使用以下命令:
    restore -xf /dev/nst0 /etc
e)dd命令
dd 是一個文件系統複製實用工具,它產生文件系統的二進制副本。dd 還可用於產生硬盤驅動器的映像,類似於使用諸如 Symantec 的 Ghost 這樣的產品。然而,dd 不是基於文件的,因此您只能使用它來將數據還原到完全相同的硬盤驅動器分區。
dd命令舉例
1.把第一個硬盤的前 512 個字節存爲一個文件:
    dd if=/dev/hda of=disk.mbr bs=512 count=1

2爲軟盤建立鏡像文件
dd if=/dev/fd0 of=disk.img bs=1440k
有趣的是,這個鏡像文件能被 HD-Copy ,Winp_w_picpath 等工具軟件讀出。
f) cp命令
命令cp是copy的縮寫,用於複製文件;目錄。標準的 cp 命令可用於複製整個目錄樹。該選項將對非標準的文件執行未知的操作。有些 UNIX 變種和 GNU cp 工具支持 -R 選項,使用該選項可以正確地複製命名管道、鏈接和其他的文件。
命令舉例
1 將dir1下的所有目錄包括子目錄陸續地複製到dir2中。
    #cp -a dir1 dir2
2.將一個目錄中的內容複製到一個已有的目錄中
    $ cp -r /home/mc/* /export/home/mc
總結:
Linux 是一個穩定而可靠的環境。但是任何計算系統都有無法預料的事件,比如硬件故障。擁有關鍵配置信息的可靠備份是任何負責任的管理計劃的組成部分。在 Linux 中可以通過各種各樣的方法來執行備份。所涉及的技術從非常簡單的腳本驅動的方法,到精心設計的商業化軟件。備份可以保存到遠程網絡設備、磁帶驅動器和其他可移動媒體上。備份可以是基於文件的或基於驅動器映像的。可用的選項很多,您可以混合搭配這些技術,爲您的環境設計理想的備份計劃。備份關鍵文件涉及到確定相關文件,並找到一種合適的方法存儲和備份這些信息。文件可能存儲在許多不同的位置,而您應該多加小心,以確保包含重要的、但經常被遺忘的內容,比如內核驅動程序、庫和相關配置。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章