<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Thinking in XiaoQiang
    世人皆有悲哀,只有你不明白
    posts - 56,comments - 150,trackbacks - 0
    Linux 備份與恢復速成指南

    級別: 初級

    Chris Walden
    電子商務架構師, IBM Developer Relations
    2004 年 1 月

    Column iconIBM 電子商務架構師 Chris Walden 將通過他在 developerWorks 上發表的九篇系列文章來指導您如何在 Linux 環境中運用您的 Windows 操作技巧。本部分將考察 Linux 系統上的內容,同時在考慮到恢復和安全的情況下,計劃并實現常規備份。

    Linux 是一個穩定而可靠的環境。但是任何計算系統都有無法預料的事件,比如硬件故障。擁有關鍵配置信息的可靠備份是任何負責任的管理計劃的組成部分。在 Linux 中可以通過各種各樣的方法來執行備份。所涉及的技術從非常簡單的腳本驅動的方法,到精心設計的商業化軟件。備份可以保存到遠程網絡設備、磁帶驅動器和其他可移動媒體上。備份可以是基于文件的或基于驅動器映像的。可用的選項很多,您可以混合搭配這些技術,為您的環境設計理想的備份計劃。

    確定策略
    可以采用許多不同的方法來備份系統。欲了解關于這方面的一些信息,您可以閱讀本文結尾處 參考資料 中列出的“Introduction to Backing Up and Restoring Data”一文。

    所備份的內容很大程度上取決于您備份它們的理由。您是否試圖從嚴重的故障(比如硬盤驅動器問題)中恢復?您是否想歸檔以便能在需要時恢復舊的文件?您計劃從一個冷系統和還原著手,還是從一個預加載的備用系統著手?

    確定要備份的內容
    在備份和還原系統時,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 目錄中。不過出于完整性的考慮,您可能希望備份它們。

    在生產環境中,我希望確保數據不會丟失,因而我會備份除 /proc 目錄之外的整個系統。如果最擔心用戶和配置,我會僅備份 /etc、/var、/home 和 /root 目錄。

    備份工具
    正如前面提到過的, Linux 備份在很大程度上就是打包和解包文件。這允許使用現有的系統實用工具和腳本來執行備份,而不必購買商業化的軟件包。在許多情況下,這類備份將是足夠的,并且為管理員提供了極大的控制能力。備份腳本可以使用 cron 命令來自動化,這個命令控制 Linux 中預定的事件。

    tar
    tar 是一個已移植到 Linux 中的經典 UNIX 命令。 tartape archive(磁帶歸檔)的縮寫,最初設計用于將文件打包到磁帶上。如果您下載過 Linux 源代碼,或許已經碰到過 tar 文件。這是一個基于文件的命令,它本質上是連續地、首尾相連地堆放文件。

    使用 tar 可以打包整個目錄樹,這使得它特別適合用于備份。歸檔文件可以全部還原,或從中展開單獨的文件和目錄。備份可以保存到基于文件的設備或磁帶設備上。文件可以在還原時重定向,以便將它們重新放到一個與最初保存它們的目錄(或系統)不同的目錄(或系統)。 tar 是與文件系統無關的。它可以使用在 ext2、ext3、 jfs、Reiser 和其他文件系統上。

    使用 tar 非常類似于使用諸如 PKZip 這樣的文件實用工具。只需將它指向一個目的(可以是文件或設備),然后指定您想要打包的文件。您可以通過標準的壓縮類型來動態壓縮歸檔文件,或指定一個自己選擇的外部壓縮程序。要通過 bzip2 壓縮或解壓縮文件,可使用 tar -z 命令。

    要使用 tar 來把除 /proc 目錄之外的整個文件系統備份到 SCSI 磁帶設備:

     
    tar -cpf /dev/st0 / --exclude=/proc
    

    在上面的例子中, -c 開關表示歸檔文件正在被創建。 -p 開關表示我們希望保留文件許可權限,這對良好的備份來說是很關鍵的。 -f 開關指向該歸檔文件的文件名。在本例中,我們使用的是原始磁帶設備 /dev/st0。/ 表示我們想要備份的內容。既然我們想要備份整個系統,因此把這個開關指定為根(root)。當把 tar 指向一個目錄(以 / 結尾)時,它會自動遞歸。最后,我們排除了 /proc 目錄,因為它沒有包含需要保存的任何內容。如果單盒磁帶容納不下這個備份,我們需要添加 -M 開關(本例中沒有顯示)以進行多卷備份。

    以防萬一
    不要忘了 Linux 是區分大小寫的。例如, tar 命令應該總是以小寫的形式執行。命令行開關可以是大寫、小寫或大小寫的混合。例如, -t-T 執行不同的功能。文件或目錄名稱可以混合使用大小寫,而且就像命令和命令行開關一樣,是區分大小寫的。

    要還原一個或多個文件,可以使用帶提取開關( -x )的 tar 命令:

    
    tar -xpf /dev/st0 -C /
    

    這里的 -f 開關同樣指向歸檔文件, -p 開關表明我們想要還原歸檔的權限。 -x 開關表明從歸檔中提取文件。 -C / 表明我們想要讓還原從 / 開始。 tar 通常還原到運行這個命令的目錄。 -C 開關使我們的當前目錄不再相關。

    您可能會經常使用的另外兩個 tar 命令是 -t-d 開關。 -t 開關列出某個歸檔文件的內容。 -d 開關將歸檔文件的內容與系統上的當前文件作比較。

    為便于操作和編輯,您可以將想要歸檔的文件和目錄放進一個文本文件中,然后在命令行通過 -T 開關引用這個文本文件。這些文件和目錄可以與命令行上列出的其他目錄結合起來。下面的命令行備份 MyFiles 中列出的所有文件和目錄、/ 根目錄和 /tmp 目錄中的所有 iso 文件。

    
    tar -cpf /dev/st0 -T MyFiles /root /tmp/*.iso
    

    文件列表只是一個文本文件,其中列出文件或目錄。下面是一個例子:

    
    /etc
              
    /var
    /home
    /usr/local
    /opt

    請注意 tar -T (或 files-from )命令不能接受通配符。文件必須明確地列出。上面的例子展示了一種單獨地引用文件的方法。您還可以執行腳本來搜索系統,然后建立一個列表。下面就是這樣一個腳本的例子:

    
    #!/bin/sh
              
    cat MyFiles > TempList
    find /usr/share -iname *.png >> TempList
    find /tmp -iname *.iso >> TempList
    tar -cpzMf /dev/st0 -T TempList

    上面的腳本首先將 MyFiles 中的所有現有文件列表復制到 TempList。然后它執行兩個 find 命令來搜索文件系統中匹配某個模式的文件,并將它們附加到 TempList。第一次是搜索 /usr/share 目錄樹中以 .png 結尾的所有文件。第二次是搜索 /tmp 目錄樹中以 .iso 結尾的所有文件。在建立好列表之后, tar 然后在文件設備 /dev/st0 (第一個 SCSI 磁帶設備)上創建 一個新的歸檔文件,該文件使用 g zip 格式來壓縮,并保留所有文件權限。該歸檔文件將跨越多個卷。要歸檔的文件的名稱將從 TempList 文件中提取。

    還可以使用腳本來執行更精細的操作,比如增量備份。Gerhard Mourani 在他的 Securing and Optimizing Linux 一書中給出了一個優秀的腳本,您可在本文結尾處的 參考資料中找到關于這本書的信息。

    也可以編寫腳本來還原文件,雖然還原通常是手動進行的。正如上面提到過的,用于提取文件的 -x 開關代替了 -c 開關。可以還原整個歸檔文件,或者還原指定的個別文件或者目錄。使用通配符來引用歸檔文件中的文件是可以的。還可以使用開關來轉儲和還原。

    dump 和 restore
    dump 可以執行類似 tar 的功能。然而, dump 傾向于考慮文件系統而不是個別的文件。下面是引自 dump 手冊文件中的內容:“dump 檢查 ext2 文件系統上的文件,并確定哪些文件需要備份。這些文件將出于安全保護而被復制到給定的磁盤、磁帶或其他存儲媒體上……大于輸出媒體容量的轉儲將被劃分到多個卷。在大多數媒體上,容量是通過一直寫入直至返回一個 end-of-media 標記來確定的。”

    配合 dump 的程序是 restore ,它用于從轉儲映像還原文件。

    restore 命令執行轉儲的逆向功能。可以首先還原文件系統的完全備份,而后續的增量備份可以在已還原的完全備份之上覆蓋。可以從完全或部分備份中還原單獨的文件或者目錄樹。

    dumprestore 都能在網絡上運行,因此您可以通過遠程設備進行備份或還原。 dumprestore 使用磁帶驅動器和提供廣泛選項的文件設備。然而,兩者都僅限用于 ext2 和 ext3 文件系統。如果使用的是 JFS、Reiser 或者其他文件系統,您將需要其他的實用工具,比如 tar

    使用 dump 執行備份
    使用 dump 執行備份是相當簡單的。下面的命令執行一個完全 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 會自動跟蹤多個卷。

    跳過文件
    標記將被 dump 跳過的文件和目錄是可以做到的。實現此目的的命令是 chattr ,它改變 ext2 和 ext3 文件系統上的擴展屬性。

    
    chattr +d <filename>
    

    上面的命令向文件添加一個標記,讓 dump 在執行備份時跳過該文件。

    使用 restore 來執行還原
    要還原使用 dump 保存的信息,可以使用 restore 命令。像 tar 一樣, dump 能夠列出( -t )歸檔文件的內容,并與當前文件作比較( -C )。使用 dump 時必須小心的地方是還原數據。有兩種非常不同的還原方法,您必須使用正確的方法才能獲得可預測的結果。

    重建 (-r)
    記住,在設計 dump 時考慮得更多的是文件系統,而不是單獨的文件。因此,存在兩種不同的文件還原風格。要重建一個文件系統,可使用 -r 命令行開關。設計重建的目的是為了能在空文件系統上操作,并將它還原為已保存的狀態。在執行重建之前,您應該已經創建、格式化和裝載(mount)了該文件系統。不應該對包含文件的文件系統執行重建。

    下面是使用上面執行的轉儲來執行完全重建的例子。

    
    restore -rf /dev/nst0
    

    上面這個命令需要針對要還原的每個文件系統分別執行。

    在需要的時候,可以重復這個過程來添加增量備份。

    提取 (-x)
    如果需要使用單獨的文件而不是使用整個文件系統,您必須使用 -x 開關來提取它們。例如,要僅從我們的磁帶備份中提取 /etc 目錄,可使用以下命令:

    
    restore -xf /dev/nst0 /etc
    

    交互式還原 (-i)
    restore 提供的另外一個特性是交互式模式。使用命令:

    
    restore -if /dev/nst0
    

    將把您置于交互式 shell 中,同時還顯示了包含在該歸檔文件中的項。鍵入“help”將會顯示一個命令列表。然后您就可以瀏覽并選擇希望提取的項。務必記住,您提取的任何文件都將進入當前目錄。

    dump 與 tar
    dumptar 都有一批擁護者。兩者都各有優點和缺點。如果您運行的是除 ext2 或 ext3 之外的任何文件系統,那么 dump 就對您不可用。然而如果不是這種情況,那么只需最少的腳本就能運行 dump ,并且 dump 還具有可用于幫助還原的交互式模式。

    我傾向于使用 tar ,因為我喜歡編寫腳本來獲得額外的控制級別。此外還有用于操作 .tar 文件的多平臺工具。

    其他工具
    在 Linux 中,任何能夠復制文件的程序都可以用來執行某種程度的備份。有人就使用 cpiodd 來執行備份 。 cpio 是又一個與 tar 差不多的打包實用工具,但使用得不太普遍。 dd 是一個文件系統復制實用工具,它產生文件系統的二進制副本。 dd 還可用于產生硬盤驅動器的映像,類似于使用諸如 Symantec 的 Ghost 這樣的產品。然而, dd 不是基于文件的,因此您只能使用它來將數據還原到完全相同的硬盤驅動器分區。

    商業化備份產品
    可用于 Linux 的商業化備份產品有很多。商業化產品一般提供了便利的界面和報告系統,而在使用諸如 dumptar 這樣的工具時,您必須自食其力。商業化產品很廣泛,通常提供大量的特性。使用商業軟件包的最大好處是,有一個預先建立的用于處理備份的策略,您可以立即投入工作。商業化的開發人員已經犯了您即將要犯的許多錯誤,他們的智慧的代價相比于丟失您的寶貴數據來說是廉價的。

    Tivoli Storage Manager
    Tivoli Storage Manager 或許是現在可用于 Linux 的最好的商業化備份和存儲管理實用工具。Tivoli Storage Manager 服務器可運行在多種平臺上,包括 Linux,而客戶機則可以運行在更多種類的平臺上。

    本質上,Storage Manager 服務器是通過適合于備份該環境的設備來配置的。要參與備份的任何系統都要加載一個與服務器通信的客戶機。備份可以按計劃執行、通過 Tivoli Storage Manager 客戶機界面手動執行,或者使用基于 Web 的界面遠程執行。

    TSM 基于策略的性質意味著無需經常調整文件列表,就能夠為備份行為定義中心規則。此外,IBM Tivoli Storage Resource Manager 還能夠識別、評估、控制和預測企業存儲資產的利用情況,能夠檢測潛在的問題并自動應用自修復調整。更多細節請參見 Tivoli Web 站點(參見 參考資料中的鏈接)。

    圖 1. Tivoli Storage Manager 菜單
    圖 1. Tivoli Storage Manager 菜單

    然后備份和還原就通過遠程設備來處理

    圖 2. Tivoli Storage Manager 界面
    圖 2. Tivoli Storage Manager 界面

    前瞻和回顧
    擁有良好備份的第一步是擁有計劃。首先知道您需要保存的數據以及需要什么恢復策略,然后使用最適合該策略的工具。

    Linux 附帶了一些現成的(out of the box)有用備份工具。其中兩個最常用的是 tardump/restore 。兩者都能執行完全系統備份。使用創造性的腳本,您能夠設計一個自定義的方案來本地和遠程地備份系統。

    然而,編寫自己的備份腳本可能是一項繁重的任務,對于復雜的企業來說更是如此。諸如 Tivoli Storage Manager 這樣的商業化軟件降低了學習難度,并允許您立即控制自己的備份,但是您可能必須調整自己的策略來適應這些工具的功能。

    參考資料

    關于作者
    Chris Walden 是德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務架構師,該公司為 IBM 商業伙伴提供教育、實現和咨詢。他致力于 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施服務器的各個領域,包括混合平臺用戶環境下的文件、打印以及其他應用服務等。Chris 有 10 年的計算機行業經驗,從現場支持到 Web 應用開發和顧問,各個領域他都曾涉足。您可以通過電子郵件 cmwalden@us.ibm.com 與 Chris 聯系。
    posted on 2005-10-27 09:29 小強 閱讀(274) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 妞干网在线免费视频| 国产成人福利免费视频| 亚洲成av人片天堂网老年人| 色偷偷噜噜噜亚洲男人| 破了亲妺妺的处免费视频国产 | 亚洲AV美女一区二区三区| 中文在线免费看视频| 久久精品夜色国产亚洲av| 免费国产叼嘿视频大全网站| 91亚洲导航深夜福利| 日韩在线播放全免费| 在线a亚洲老鸭窝天堂av高清| 最近中文字幕免费mv视频7| 噜噜综合亚洲AV中文无码| 免费一级毛片一级毛片aa| 国产免费久久精品99久久| 久久精品国产亚洲AV网站| 182tv免费视视频线路一二三| 亚洲AV无码专区在线亚| 国产青草视频在线观看免费影院| 曰批全过程免费视频免费看| 亚洲女初尝黑人巨高清| 最近中文字幕国语免费完整| 色老板亚洲视频免在线观| 免费吃奶摸下激烈视频| 久久www免费人成精品香蕉| 久久亚洲精品中文字幕| 大地资源二在线观看免费高清 | 亚洲精品国产av成拍色拍| 亚洲国产成人乱码精品女人久久久不卡| 无套内谢孕妇毛片免费看看| 久久亚洲精品无码| 成人免费视频一区| 国产免费播放一区二区| 亚洲小说图片视频| 亚洲成人影院在线观看| 中文字幕免费视频| 特级一级毛片免费看| 亚洲国产片在线观看| 中文字幕久久亚洲一区| 啦啦啦中文在线观看电视剧免费版|