利用dump和restore實現Linux的備份和還原

對於系統而言,咱們能夠有不少種辦法去備份(還原)系統或文件,之因此要去作備份,就是爲了在系統或文件遭到損害時,能及時恢復,把損失減少到最小。固然,對於企業服務器而言,備份的重要性是舉足輕重。我們今天就詳細討論一下LINUX中如何用dumprestore實現備份和還原。
 
一,dump的原理,優勢及限制
dumprestore默認已經安裝在RHEL5中,若是你使用的Linux中沒有,能夠本身去google中搜一下並下載安裝。
使用dump命令時,它會創建一份自上次備份操做以來進行修改過的文件列表,而後把這些文件打包成一個單獨的文件。在作備份時,須要指定一個備份級別,它是0-9之間的一個整數。級別爲N的轉儲會對從上次進行的級別小於N的轉儲操做以來修改過的全部文件進行備份,而級別0就是徹底備份。經過這種方式,能夠很輕鬆的實現增量備份,差別備份,甚至每日備份。例如,第一次備份時可選擇級別0(具體操做看後面),之後天天作增量備份時就能夠天天依次使用級別1,級別2,級別3等等… …;當須要天天作差別備份時,可先選擇級別0作完整備份,而後天天都使用同一大於0的級別就好了,好比說次日用5,第三天也用5,第四天也同樣。
使用dump的優勢:
1,備份能夠跨多卷磁帶
2,能備份任何類型的文件,甚至是設備
3,備份時,文件的權限,宿主,宿組,修改時間等都會被保存
4,可以正確處理從未包含任何數據的文件塊(孔洞文件)
5,可以作增量,差別備份
它也有不足:
1,每一個文件系統必須單獨轉儲備份
2,只有本地計算機的文件系統纔可以轉儲備份(rdumprrestore可用來彌補此項不足)
固然,使用tar也能夠用來實現備份和還原,但tar只能在LinuxUnix環境下使用,對於跨平臺的環境,dump使用起來我的感受更方便一些。
若是有條件,dump也能夠將備份存儲在磁帶上。Linux一般用/dev/st0表明倒帶設備,而用/dev/nst0表明非倒帶設備,使用倒帶設備存儲時,當磁帶用完它會自動倒帶並接着存儲,因此會覆蓋之前的數據,這樣就存在之前數據丟失的風險。這個地方我們就不詳細討論了。
 
二,dump的格式,經常使用參數及使用
格式:dump [-level#] [-acmMnqSuv] [-A file] [-B records] [-b blocksize]
             [-d density] [-D file] [-e inode#,inode#,...] [-E file]
             [-f file] [-h level] [-I nr errors] [-j zlevel] [-Q file]
             [-s feet] [-T date] [-y] [-z zlevel] filesystem
經常使用參數    Level:備份級別0-9
            -B:指定用來備份的磁帶的長度,以KB爲單位(有些磁帶不支持以結束標誌判斷時,就須要使用到此參數
            -b:指定塊大小,默認爲10
            -d:指定密度,默認爲1600BPI
            -D:設定存儲數據庫的名稱和路徑,默認是/etc/dumpdates文件
            -e-E:與備份文件的inodes數有關的參數)
             -f:指定備份文件的路徑和名稱
             -u:更新數據庫文件/etc/dumpdates 
             -s:統計備份所需的空間,通常在備份前作,以防磁帶或磁盤空間不足
舉例:
dump  –0s /dev/sda1
      完整備份/dev/sda1前統計一下需多大容量
 
dump -0u –f /tmp/boot.dump /boot

 以徹底備份的方式備份/boot分區到文件/tmp/boot.dump,而且更新/etc/dumpdates數據庫文件。「0」表明的就是備份級別爲徹底備份。「u」更新數據庫,會將文件的日期,存儲級別,文件系統等信息都記錄下來。若是歷來都不使用-u參數,那麼全部的存儲都會變爲級別0。由於,系統不會有先前備份過當前文件系統的記錄。
      當之後更改了/boot,好比說內核升級後,若是再想備份,能夠按下列方式:
      dump -1u –f /tmp/boot1.dump /boot
      這樣就只會備份徹底備份後有變化的文件(級別1大於0)。
      若是之後想作增量備份,就依次用級別234… …
      若是想作差別備份,之後就一直用級別1.關於增量備份和差別備份的區別看看下圖吧,不詳細講了:
三,查看備份文檔中的文件及還原
查看備份文檔中的文件和還原就須要用到另一個工具,restore
  功能說明:還原(Restore)由傾倒(Dump)操做所備份下來的文件或整個文件系統(一個分區)。

    語  法:restore [-cCvy][-b <區塊大小>][-D <文件系統>][-f <備份 文件>][-s <文件編號>] 或 restore [-chimvy][-b <區塊大小>][-f <備份文 件>][-s <文件編號>] 或 restore [-crvy][-b <區塊大小>][-f <備份文 件>][-s <文件編號>] 或 restore [-cRvy][-b <區塊大小>][-D <文件系 統>][-f <備份文件>][-s <文件編號>] 或 restore [chtvy][-b <區塊大 小>][-D <文件系統>][-f <備份文件>][-s <文件編號>][文 件...] 或 restore [-chmvxy][-b <區塊大小>][-D <文件系統>][-f <備份文 件>][-s <文件編號>][文件...]

    補充說明:restore 指令所進行的操做和dump指令相反,傾倒操做可用來備份文件,而還原操做則是寫回這些已備份的文件。

    參  數:
  
    -b<區塊大小>   設置區塊大小,單位是Byte。
  
    -c   不檢查傾倒操做的備份格式,僅准許讀取使用舊格式的備份文件。
  
    -C   使用對比模式,將備份的文件與現行的文件相互對比。
  
    -D<文件系統>   容許用戶指定文件系統的名稱。
  
    -f<備份文件>   從指定的文件中讀取備份數據,進行還原操做。
  
    -h   僅解出目錄而不包括與該目錄相關的全部文件。
  
    -i   使用互動模式,在進行還原操做時,restore指令將依序詢問用戶。
  
    -m   解開符合指定的inode編號的文件或目錄而非採用文件名稱指定。
  
    -r   進行還原操做。
  
    -R   全面還原文件系統時,檢查應從何處開始進行。
  
    -s<文件編號>   當備份數據超過一卷磁帶時,您能夠指定備份文件的編號。
  
    -t   指定文件名稱,若該文件已存在備份文件中,則列出它們的名稱。
  
    -v   顯示指令執行過程。
  
    -x   設置文件名稱,且從指定的存儲媒體裏讀入它們,若該文件已存在在備份文件中,則將其還原到文件系統內。

    -y   不詢問任何問題,一概以贊成回答並繼續執行指令。
 
1,  查看備份文檔中的文件
-t參數是查看的意思,-f是指定要查看的備份文件。經過以上命令,就能夠查看備份文件中備份了哪些文件。
1,  還原備份
還原備份的時候有兩種方式能夠選擇,一種是徹底還原,一種是有選擇的部分還原。
我們仍是用前面的例子來看,若是你前面備份的/boot分區文件損壞了,這時候你想還原,能夠按以下步驟:
-r參數表示重建
 
若是隻是一部分數據丟失了,那麼可使用參數-i經過交互方式來實現文件的選擇性還原
這個地方我故意刪掉了一個文件initrd-2.6.18-53.el5.img
使用參數-i交互式,並指定備份文件。
經過?來查看可使用的命令,ls是列出備份文件的內容
經過 add 來選擇要恢復的文件,選定後再 ls 的時候會標記爲 *
經過extract還原選定的文件。
提示「Specify next volume」時填如1,它表示是在單獨一卷磁帶(這裏我用的是磁盤的空間)上進行的備份。下面一行提示選「n」,表示不是恢復整個文件系統,而是單個文件。
相關文章
相關標籤/搜索