轉 linux系統備份

來源:互聯網
上載者:User

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 命令。 tar 是 tape archive(磁帶歸檔)的縮寫,最初設計用於將檔案打包到磁帶上。如果您下載過 Linux 原始碼,或許已經碰到過 tar 檔案。這是一個基於檔案的命令,它本質上是連續地、首尾相連地堆放檔案。

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

使用 tar 非常類似於使用諸如 PKZip 這樣的檔案工具 + 生產力。只需將它指向一個目的(可以是檔案或裝置),然後指定您想要打包的檔案。您可以通過標準的壓縮類型來動態壓縮歸檔檔案,或指定一個自己選擇的外部壓縮程式。要通過 bzip2 壓縮或解壓縮檔案,可使用 tar -z 命令。

要使用 tar 來把除 /proc 目錄之外的整個檔案系統備份到 SCSI 磁帶裝置:

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

tar -cvpzf /media/sda7/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media /

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

tar -cpf /dev/st0 / --exclude=/proc --exclude=/dev --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media

tar cvpzf /run/media/gbyukg/36323CEDD12B8040/backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/run/media --exclude=/dev --exclude=/media --exclude=/home/gbyukg /

以防萬一

不要忘了 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 命令執行轉儲的逆向功能。可以首先還原檔案系統的完全備份,而後續的增量備份可以在已還原的完全備份之上覆蓋。可以從完全或部份備份中還原單獨的檔案或者分類樹。

dump 和 restore 都能在網路上運行,因此您可以通過遠程裝置進行備份或還原。 dump 和 restore 使用磁帶磁碟機和提供廣泛選項的檔案裝置。然而,兩者都僅限用於 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

dump 和 tar 都有一批擁護者。兩者都各有優點和缺點。如果您啟動並執行是除 ext2 或 ext3 之外的任何檔案系統,那麼 dump 就對您不可用。然而如果不是這種情況,那麼只需最少的指令碼就能運行 dump ,並且 dump 還具有可用於協助還原的互動式模式。

我傾向於使用 tar ,因為我喜歡編寫指令碼來獲得額外的控制層級。此外還有用於操作 .tar 檔案的多平台工具。

 

回頁首

其他工具

在 Linux 中,任何能夠複製檔案的程式都可以用來執行某種程度的備份。有人就使用 cpio 和 dd 來執行備份 。 cpio 是又一個與tar 差不多的打包工具 + 生產力,但使用得不太普遍。 dd 是一個檔案系統複製工具 + 生產力,它產生檔案系統的二進位副本。 dd 還可用於產生硬碟的映像,類似於使用諸如 Symantec 的 Ghost 這樣的產品。然而, dd 不是基於檔案的,因此您只能使用它來將資料還原到完全相同的硬碟分區。

 

回頁首

商業化備份產品

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

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 菜單

 

然後備份與還原就通過遠程裝置來處理 


圖 2. Tivoli Storage Manager 介面

 
 

回頁首

前瞻和回顧

擁有良好備份的第一步是擁有計劃。首Crowdsourced Security Testing道您需要儲存的資料以及需要什麼恢複策略,然後使用最適合該策略的工具。

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

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


參考資料

  • 您可以參閱本文在 developerWorks 全球網站上的 英文原文. 

  • 閱讀 Windows 到 Linux 之旅系列文章的其他部分( developerWorks,2003 年 11 月)。 
  • Linux Administrator's Security Guide是一個安全指南,其中有一個非常優秀的小節討論了 Linux 備份和恢複實踐。 
  • Introduction to Backing Up and Restoring Data是一篇與作業系統或系統體繫結構無關的概述。作者在本文中探討了備份技術以及如何為備份制定計劃。 
  • Linux Administration Made Easy是一篇較舊的參考資料,但是仍然有用,因為 Linux 的一般過程和技術仍然保持一致。 
  • The Linux System Administrator's Guide為初學者介紹了 Linux 系統的系統管理。 

  • Securing and Optimizing Linux - A Hands on Guide (Red Hat Edition) 一書的 第 7 章“備份與還原”是另一份不錯的指南,其中包括一個指令碼,用於執行基於 tar 的增量備份。 
  • The TAO of Backup是對備份哲學的有趣展示,以哲學的形式呈現出來。雖然它和一款商業化的產品相關,但是這段資訊寫得非常好。 
  • IBM developerWorks教程“ Linux 機器備份”指導您完成建立和貫徹備份策略的過程。 
  • 在 CD 上儲存資料和其他內容很容易:在 IBM developerWorks文章“ 在 Linux 上燒錄 CD”中學習如何做到這點。 
  • 如果正在從 Windows 環境轉換到 Linux 環境,您還需要閱讀 Linux 使用者技術 FAQ。 
  • The Tivoli Storage Manager 被評為 LinuxWorld 2003 最佳儲存解決方案。從 IBM 網站的 Linux 專區瞭解更多關於 Tivoli Storage Manager for Linux的資訊。 
  • Tivoli 產品頁 包含關於 Tivoli 的更多資訊,包括安全和隱私特性。 
  • “Linux 文檔計劃”中 Introduction to Linux的第 3 章 討論了檔案許可權和安全。 
  • 在 developerWorksLinux 專區可以找到更多 為 Linux 開發人員準備的參考資料。 

關於作者

Chris Walden 是德克薩斯州奧斯汀的 IBM Developer Relations Technical Consulting(也稱為 dragonslayers )的一名電子商務架構師,該公司為 IBM 商業夥伴提供教育、實現和諮詢。他致力於 Linux 相關工作,一有機會就向身邊的人宣傳 Linux 的種種好處。除了完成他的架構師的職責之外,他還精通 Linux 基礎設施伺服器的各個領域,包括混合平台使用者環境下的檔案、列印以及其他應用服務等。Chris 有 10 年的電腦行業經驗,從現場支援到 Web 應用程式開發和顧問,各個領域他都曾涉足。您可以通過電子郵件cmwalden@us.ibm.com 與 Chris 聯絡。

 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.