轉 Linux 備份策略

qqmengxue發表於2010-09-09

備份是個很重要的工作,很多人總是在系統損毀的時候才在哀嚎說:『我的資料啊!天那...!』此時才會發現備份資料的可愛! 但是備份其實也非常可怕!因為你的重要資料都在備份檔裡面,如果這個備份被竊取或遺失,其實對你的系統資安影響也非常大! 同時,備份使用的媒體選擇也非常多樣,但是各種儲存媒體各有其功能與優劣,所以當然得要選擇囉!閒話少說,來談談備份吧!

[@more@]

備份資料的考量

老實說,備份是系統損毀時等待救援的救星!因為你需要重新安裝系統時, 備份的好壞會影響到你係統復原的進度!不過,我們想先知道的是,系統為什麼會損毀啊?是人為的還是怎樣產生的啊? 事實上,系統有可能由於不預期的傷害而導致系統發生錯誤! 什麼是不預期的傷害呢?這是由於系統可能因為不預期的硬體損壞,例如硬碟壞掉等等,或者是軟體問題導致系統出錯, 包括人為的操作不當或是其他不明因素等等所致。底下我們就來談談系統損壞的情況與為何需要備份吧!

造成系統損毀的問題-軟體問題
根據分析,其實系統的軟體傷害最嚴重的就屬使用者的操作不當啦!像最近這幾天才在鳥園討論區發現, 有網友手滑了一下,結果在指令列輸入了『 rm -rf /home 』,這造成什麼後果?就造成使用者家目錄被刪光光~ 因為當時下達指令的身份是 root 啊~會欲哭無淚喔!為了避免這方面的『手滑』問題,備份是重要的!

軟體傷害除了來自主機上的使用者操作不當之外,最常見的可能是資安攻擊事件了。 假如你的 Linux 系統上面某些 Internet 的服務軟體是最新的!這也意味著可能是『相對最安全的』, 但是,這個世界目前的閒人是相當多的,你不知道什麼時候會有所謂的『駭客軟體』被提供出來,萬一你在 Internet 上面的服務程式被攻擊,導致你的 Linux 系統全毀,這個時候怎麼辦?當然是要復原系統吧?

那如何復原被傷害的系統呢?『重新安裝就好啦!』或許你會這麼說, 但是,像鳥哥管理的幾個網站的資料,尤其是 MySQL 資料庫的資料,這些都是彌足珍貴的經驗資料, 萬一被損毀而救不回來的時候,不是很可惜嗎?這個還好哩,萬一你是某家銀行的話, 那麼資料的損毀可就不是能夠等閒視之的!關係的可是數千甚至上萬人的身家財產!這就是備份的重要性了! 他可以最起碼的稍微保障我們的資料有另外一份 copy 的備援以達到『安全回復』的基本要求!

主機角色不同,備份任務也不同
由於軟硬體的問題都可能造成系統的損毀,所以備份當然就很重要啦!問題是,每一部主機都需要備份嗎? 多久備份一次呢?要備份什麼資料呢?

如果是針對個人桌上型電腦使用的資料,那麼 Norton 的『 Ghost 』應該算是一套好到不行的備份大師了! 最主要是 Ghost 可以針對整個 partition 來進行備份,所以囉,我們可以將 Windows 系統當中的整個 C 或者是整個 D 槽完整的備份下來。甚至在還原方面也是非常的快速,而且操作簡便! 另外,由於個人桌上型電腦所使用的資料量通常不大,所以當 ghost 完成之後,通常只要將資料燒錄到光碟片當中,大約只要一至兩片的光碟片也就綽綽有餘囉! 那麼將光碟片儲存好,這就是最簡易的資料備份模式囉! 此外,由於個人的資料變動性不大,所以資料的備份頻率方面也不需要非常的頻繁!

但是,萬一你的主機有提供 Internet 方面的服務呢?又該如何備份啊?舉個例子來說,像是我們 Study Area 團隊的討論區網站 提供的是類似 BBS 的討論文章, 雖然資料量不大,但是由於討論區的檔案是天天在增加的,每天都有相當多的資訊流入, 由於某些資訊都是屬於重要的人物之留言,這個時候,我們能夠讓機器死掉嗎?或者是能夠一季三個月才備份一次嗎? 這個備份頻率需求的考量是非常重要的!

再提到 2002 年左右鳥哥的討論區曾經掛點的問題,以及 2003 年初 Study-Area 討論區掛點的問題,討論區一旦掛點的話,該資料庫內容如果損毀到無法救回來, 嘿嘿!要曉得討論區可不是一個人的心血耶!有的時候 (像 Study-Area 討論區) 是一群熱心 Linux 的朋友們互相建立交流起來的資料流通網,如果死掉了,那麼不是讓這些熱血青年的熱情付之一炬了嗎? 所以囉,建立備份的策略 (頻率、媒體、方法等) 是相當的重要的。


--------------------------------------------------------------------------------

備份因素考量
由於電腦 (尤其是目前的電腦,操作頻率太高、硬體良率太差、使用者操作習慣不良、 『某些』作業系統的當機率太高....) 的穩定性較差,所以囉!備份的工作就越來越重要了! 那麼一般我們在備份時考慮的因素有哪些呢?

備份哪些檔案:
哪些資料對系統或使用者來說是重要的?那些資料就是值得備份的資料!例如 /etc/* 及 /home/* 等。


選擇什麼備份的媒介:
是可讀寫光碟、另一顆硬碟、同一顆硬碟的不同 partition、還是使用網路備援系統? 哪一種的速度最快,最便宜,可將資料儲存最久?這都可以考慮的。


考慮備份的方式:
是以完整備份(類似 ghost)來備份所有資料,還是使用差異備份僅備份有被更動過的資料即可?


備份的頻率:
例如 MySQL 資料庫是否天天備份、若完整備份,需要多久進行一次?


備份使用的工具為何:
是利用 tar 、 cpio 、 dd 還是 dump 等等的備份工具?
底下我們就來談一談這些問題的解決之道吧! ^_^


--------------------------------------------------------------------------------
哪些 Linux 資料具有備份的意義

一般來說,鳥哥比較喜歡備份最重要的檔案而已 (關鍵資料備份),而不是整個系統都備份起來 (完整備份, Full backup)!那麼哪些檔案是有必要備份的呢?具有備份意義的檔案通常可以粗分為兩大類,一類是系統基本設定資訊、一類則是類似網路服務的內容資料。 那麼各有哪些檔案需要備份的呢?我們就來稍微分析一下。


--------------------------------------------------------------------------------

作業系統本身需要備份的檔案:
這方面的檔案主要跟『帳號與系統設定檔』有關係! 主要有哪些帳號的檔案需要備份呢?就是 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow, /home 底下的使用者家目錄等等, 而由於 Linux 預設的重要引數檔都在 /etc/ 底下,所以只要將這個目錄備份下來的話, 那麼幾乎所有的設定檔都可以被儲存的!

至於 /home 目錄是一般使用者的家目錄,自然也需要來備份一番!再來,由於使用者會有郵件吧!所以呢,這個 /var/spool/mail/ 內容也需要備份呦!另外,由於如果你曾經自行更動過核心,那麼 /boot 裡頭的資訊也就很重要囉!所以囉,這方面的資料你必須要備份的檔案為:

/etc/ 整個目錄
/home 整個目錄
/var/spool/mail
/boot
/root
如果你自行安裝過其他的套件,那麼 /usr/local/ 或 /opt 也最好備份一下!


--------------------------------------------------------------------------------

網路服務的資料庫方面:
這部份的資料可就多而且複雜了,首先是這些網路服務軟體的設定檔部分, 如果你的網路軟體安裝都是以原廠提供的為主,那麼你的設定檔案大多是在 /etc 底下,所以這個就沒啥大問題!但若你的套件大多來自於自行的安裝,那麼 /usr/local 這個目錄可就相當的重要了!

再來,每種服務提供的資料都不相同,這些資料很多都是人們提供的!舉例來說,你的 WWW 伺服器總是需要有人提供網頁檔案吧?否則瀏覽器來是要看啥咚咚?你的討論區總是得要寫入資料庫系統吧? 否則討論的資料如何更新與記載?所以,使用者主動提供的檔案,以及服務咦鬟^程會產生的資料, 都需要被考慮來備份。若我們假設我們提供的服務軟體都是使用原廠的 RPM 安裝的!所以要備份的資料檔案有:

軟體本身的設定檔案,例如:/etc/ 整個目錄,/usr/local/ 整個目錄
軟體服務提供的資料,以 WWW 及 MySQL 為例:
WWW 資料:/var/www 整個目錄或 /srv/www 整個目錄,及系統的使用者家目錄
MySQL : /var/lib/mysql 整個目錄
其他在 Linux 主機上面提供的服務之資料庫檔案!


--------------------------------------------------------------------------------

推薦需要備份的目錄:
由上面的介紹來看的話,如果你的硬體或者是由於經費的關係而無法全部的資料都予以備份時, 鳥哥建議你至少需要備份這些目錄呦!

/boot
/etc
/home
/root
/usr/local(或者是 /opt 及 /srv 等)
/var(註:這個目錄當中有些暫存目錄則可以不備份!)


--------------------------------------------------------------------------------

不需要備份的目錄:
有些資料是不需要備份的啦!例如我們在第六章檔案許可權與目錄配置裡頭提到的 /proc 這個目錄是在記錄目前系統上面正在跑的程式,這個資料根本就不需要備份的呢!此外,外掛的機器,例如 /mnt 或 /media 裡面都是掛載了其他的硬碟裝置、光碟機、軟碟機等等,這些也不需要備份吧? 所以囉!底下有些目錄可以不需要備份啦!

/dev :這個隨便你要不要備份
/proc:這個真的不需要備份啦!
/mnt 與 /media:如果你沒有在這個目錄內放置你自己系統的東西,也不需要備份
/tmp :幹嘛存暫存檔!不需要備份!

--------------------------------------------------------------------------------
備份用儲存媒體的選擇

用來儲存備份資料的媒體非常的多樣化,那該如何選擇呢?在選擇之前我們先來講個小故事先!


--------------------------------------------------------------------------------

一個實際發生的故事
在備份的時候,選擇一個『資料存放的地方』也是很需要考慮的一個因素! 什麼叫做資料存放的地方呢?講個最簡單的例子好了,我們知道說,較為大型的機器都會使用 tape 這一種磁帶機來備份資料,而如果是一般個人電腦的話,很可能是使用類似 Mo 這一種可讀寫式光碟片來存取資料!但是你不要忘記了幾個重要的因素,那就是萬一你的 Linux 主機被偷了呢?

這不是不可能的,之前鳥哥在成大唸書時,隔壁校區的研究室曾經遭小偷, 裡面所有的電腦都被偷走了!包括『Mo 片』,當他們發現的時候,一開始以為是硬體被偷走了,還好, 他們都有習慣進行備份,但是很不幸的,這一次連『備份的 MO 都被拿走了!』怎麼辦?!只能道德勸說小偷先生能夠良心發現的將硬碟拿回來囉!唉~真慘....


--------------------------------------------------------------------------------

異地備援系統
這個時候,所謂的『異地備援系統』就顯的相當的重要了! 什麼是異地備援呀!說的太文言了!呵!簡單的說,就是將你的系統資料『備份』到其他的地方去, 例如說我的機器在臺南,但是我還有另一部機器在高雄老家,這樣的話, 我可以將臺南機器上面重要的資料都給他定期的自動的透過網路傳輸回去! 也可以將家裡重要的資料給他丟到臺南來!這樣的最大優點是可以在臺南的機器死掉的時候, 即使是遭小偷,也可以有一個『萬一』的備份所在!

有沒有缺點啊?有啊!缺點就是~頻寬嚴重的不足! 在這種狀態下,所能採取的策略大概就是『僅將最重要的資料給他傳輸回去囉!』 至於一些只要系統從新安裝就可以回復的咚咚!那就沒有這個必要了!當然囉,如果你的網路是屬於 T1 專線的話,那麼完整備份將資料丟到另一地去,也是很可行的啦!只是鳥哥沒有那麼好命...


--------------------------------------------------------------------------------

儲存媒體的考量
在此同時,我們再來談一談,那麼除了異地備援這個『相對較為安全的備份』方法之外, 還有沒有其他的方法可以儲存備份的呢?畢竟這種網路備援系統實在是太耗頻寬了!如果像我們一般家用的 ADSL 根本就是吃不消!那麼怎麼辦?喔~那就只好使用近端的裝置來備份囉! 這也是目前我們最常見到的備份方法!例如一般我們使用的 Tape, Mo, Zip, CD-RW, DVD-RW 還有備份用抽取式硬碟與攜帶式硬碟等等! 那麼在選擇上需要注意些什麼呢?需要注意的地方有幾點:

備份速度要求 -- 思考硬碟用途:

『備份』在 Linux 主機上面也是蠻耗系統資源的!因為需要將系統的資料複製到其他裝置上面去,這個時候 I/O 與 CPU 的負載都會大!你總不希望系統就這樣給他掛點吧!此外,有些系統的資料實在太多咯, 怎麼樣也備份不完!所以囉,越快的儲存裝置是越好的!如果你是個重視速度甚於一切的人, 那麼我覺得抽取式硬碟是個不錯的方式,只不過.....目前我知道的抽取式硬碟都需要冷開機才行,不太符合 Linux 主機 24 小時全年無休的狀態....

但是硬碟真的越來越大、越來越便宜了,不使用速度快的硬碟來備份實在很可惜~ 加上目前的火線 (IEEE 1394) 以及 USB 2.0 外接式硬碟盒技術已經相當的成熟, 傳輸速度又快,又可以直接熱拔插 (Plug and Play),接上 USB 硬碟, 整個複製一下,傳輸速度理論上可達 480Mbps (約 60 MBytes/second) ,快的哩! 複製完畢,又可以將硬碟帶走,不需要與主機放置在一起,還可以避免同時被偷,真是不錯。

但是,硬碟還是有一定的困擾,那就是『不接電源的硬碟需要很好很好的保養』。 我們知道電腦最好的保養就是常常開機去咦饕幌攏?獾瞄L期不開機,造成受潮而損壞。 這個攜帶式硬碟只是偶而才會連上主機來進行備份的資料,除非你額外購買一部防潮箱來放置硬碟, 否則很容易損壞!所以,近年來速度越來越快的 DVD-RW 就變的很方便囉!至於磁帶 (tape),在速度上完全是落後的.....

至於使用直接安裝在主機上的第二顆硬碟來備份,類似 RAID 或者是安裝一顆備份的硬碟在 Linux 系統當中,這個方案也很好, 而且速度上絕對是最具優勢的!但是就如同我們剛剛提到的,萬一你的機器被偷了,連帶的, 這顆備份的硬碟自然也就不見了.....


儲存容量 -- 磁帶備份考量:

這也是一個需要考量的因素!而且常常是最大考量的因素呢!雖然目前硬碟越來越便宜, 但是畢竟就如同前面說的,抽取式硬碟需要將系統冷開機,而建構在系統內的硬碟又同時具有不安全的成分在, 攜帶式硬碟可能又有不容易儲存的特性,這個時候一個大容量的替代方案就顯的很重要了!雖然 CD-RW 與 DVD-RW 可以提供不錯的速度,但是其容量畢竟不足 (雖然有高達幾十 GB 的藍光 DVD 可用,但目前 (2009) 尚未普及, 光碟片太貴了!) 所以說,具有大容量的 tape (磁帶容量最小的一款也可以到達 8 GB 左右!) 就相當的具有這方面的優勢了!而且攜帶方便,存放也容易!更可以帶著走~~


經費與資料可靠性 -- DVD 的使用,可儲存 10 年左右:

在經費不短缺的情況下,我們當然會建議你上面的幾個裝置都買一買, 然後分別在不同的時間進行不同的備份作業 (底下我們有些建議的啦!^_^) !但是如果經費也是需要考量的話,那麼磁帶機這個目前還算貴重的物品可能暫時還動不到! 這個時候近來漸漸便宜的 DVD-RW 就顯的活躍的多了!而且光碟片也可以儲存很久的ㄋㄟ~ 當然,目前應該不會有人以軟碟來備份了吧!呵呵!軟碟可是相當不安全的。
無論如何,如果經費允許的話, Tape 備份資料真的是一個不錯的點子!因為他的高容量讓我好滿意! 再來,如果經費稍微短缺的話,那麼 DVD-RW 經常性的將資料燒錄下來,這也是蠻好的,尤其 DVD 片又不佔空間!再來,如果還是沒有辦法,那麼一顆內建在 Linux 的硬碟用來備份也是不錯的! 什麼!連備份的硬碟都沒有,唉!怎麼跟我一樣~這個時候沒辦法啦,用原來的安裝系統的硬碟,多留一個 partition 用來當作備份之用吧 (這也是目前鳥哥常用的方法之一!)底下我們來看一看一些常見的裝置代號!

光碟機: /dev/cdrom (其實應該是 /dev/sdX 或 /dev/hdX)
磁帶機: /dev/st0 (SCSI 介面), /dev/ht0 (IDE 介面)
軟碟機: /dev/fd0, /dev/fd1
硬碟機: /dev/hd[a-d][1-16] (IDE), /dev/sd[a-p][1-16] (SCSI/SATA)
外接式 USB 硬碟機: /dev/sd[a-p][1-16] (與 SCSI 相同)
印表機: /dev/lp[0-2]
特別留意的是磁帶機呦!如果你有錢的話,那麼買一部磁帶機是相當不錯的建議!沒錢的話,買 IDE 或 SATA 介面的硬碟也很不錯!! ^_^


--------------------------------------------------------------------------------
備份的種類、頻率與工具的選擇

講了好多口水了,還是沒有講到重點,真是的....好了,再來提到那個備份的種類,因為想要選擇什麼儲存媒體與相關備份工具, 都與備份使用的方式有關!那麼備份有哪些方式呢?一般可以粗略分為『累積備份』與『差異備份』這兩種 (註1)。當然啦,如果你在系統出錯時想要重新安裝到更新的系統時,僅備份關鍵資料也就可以了!


--------------------------------------------------------------------------------
完整備份之累積備份 (Incremental backup)

備份不就是將重要資料複製出來即可嗎?幹嘛需要完整備份 (Full backup) 呢?如果你的主機是負責相當重要的服務, 因此如果有不明原因的當機事件造成系統損毀時,你希望在最短的時間內復原系統。此時,如果僅備份關鍵資料時, 那麼你得要在系統出錯後,再去找新的 Linux distribution 來安裝,安裝完畢後還得要考慮到資料新舊版本的差異問題, 還得要進行資料的移植與系統服務的重新建立等等,等到建立妥當後,還得要進行相關測試! 這種種的工作可至少得要花上一個星期以上的工作天才能夠處理妥當!所以,僅有關鍵資料是不夠的!


--------------------------------------------------------------------------------

還原的考量
但反過來講,如果是完整備份的話呢?若硬體出問題導致系統損毀時,只要將完整備份拿出來,整個給他傾倒回去硬碟, 所有事情就搞定了!有些時候 (例如使用 dd 指令) 甚至連系統都不需要重新安裝!反正整個系統都給他倒回去,連同重要的 Linux 系統檔案等,所以當然也就不需要重新安裝啊!因此,很多企業用來提供重要服務的主機都會使用完整備份, 若所提供的服務真的非常重要時,甚至會再架設一部一模一樣的機器呢!如此一來, 若是原本的機器出問題,那就立刻將備份的機器拿出來接管!以使企業的網路服務不會中斷哩!

那你知道完整備份的定義了吧?沒錯!完整備份就是將根目錄 (/) 整個系統通通備份下來的意思! 不過,在某些場合底下,完整備份也可以是備份一個檔案系統 (filesystem)!例如 /dev/sda1 或 /dev/md0 或 /dev/myvg/mylv 之類的檔案系統就是了。


--------------------------------------------------------------------------------

累積備份的原則
雖然完整備份在還原方面有相當良好的表現,但是我們都知道系統用的越久,資料量就會越大!如此一來, 完整備份所需要花費的時間與儲存媒體的使用就會相當麻煩~所以,完整備份並不會也不太可能每天都進行的! 那你想要每天都備份資料該如何進行呢?有兩種方式啦,一種是本小節會談到的累積備份,一種則是下個小節談到的差異備份。

所謂的累積備份,指的是在系統在進行完第一次完整備份後,經過一段時間的咦鰨

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10130206/viewspace-1038120/,如需轉載,請註明出處,否則將追究法律責任。

相關文章