Linux 基礎學習篇 - Mandrake 9

第二十三章、淺談備份策略 - for Mandrake 9

鳥哥的第一本書籍的主要內容,內容稍微與書籍不太一樣了!

最近更新時間: 2003/02/12

鳥哥的第一本書大約是在 2002 年的年底左右出版的,內容幾乎都是 Linux 基礎學習,一點也沒有談到伺服器的部份!這也是後來的雛型! 不過內容錯誤的地方很多,導致在 2003 年的年底推出了『基礎學習篇增訂版』的內容,大致上就是處理掉一些比較有嚴重錯誤的部份。 不過,因為 Linux 的版本變化非常快速,因此,寫完了這些文件之後,鳥哥還是持續在網站上更新文件內容,導致原本書籍內容的資料與網站資料差異太大! 這個問題直到鳥哥在 2008 年左右才發現!糟糕了!舊版的文件資料已經遺失~覺得相當扼腕~

因此,在底下的文件內容與當初的書籍內容雖然大同小異,不過章節的編排卻是有所不同!再花時間去一個一個處理,似乎也不太符合成本效益! 鳥哥僅是想要將自己以前的文件記錄下來而已,同時將過時的 big5 編碼改回 utf8 編碼,再加上可以支援 RWD 的樣式而已啦! 內容已經不多做編排~因此,如果內容文件你看不懂,那也是應該的! ^_^

建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。最新文章請前往鳥站首頁查閱囉!

誰需要備份資料

前面我們提到了相當多的 Linux 系統基礎,這個時候我們再來談一談:『若您的系統由於不預期的傷害,導致系統發生錯誤,該如何修復?』這可是個相當大的問題呀!怎麼說呢?又什麼叫做『不預期的傷害?』好了,假如您的 Linux 系統上面某些Internet的服務套件是最新的!也意味著可能是『相對最安全的』,但是,這個世界目前是閒人相當的多的,你不知道什麼時候會有所謂的『駭客軟體』被提供出來,萬一你在 Internet 上面的服務套件被入侵,導致你的 Linux 系統全毀,這個時候怎麼辦?!『重新安裝就好啦!』或許您會這麼說,但是,像鳥哥管理的幾個網站的資料,尤其是 MySQL 資料庫的資料,這些都是彌足珍貴的經驗資料,萬一被損毀而就不回來的時候,不是很可惜嗎?這個還好哩,萬一您是某家銀行的話,呵呵!那麼資料的損毀可就不是能夠等閒視之的!!關係的可是數千甚至上萬人的身家財產!!這就是備份的重要性了!他可以最起碼的稍微保障我們的資料有另外一份 copy 的備援以達到『安全回復』的基本要求!
 
如果是針對個人資料的話,那麼在一般桌上型電腦中,最好用的備份軟體就是『Ghost』這一個遠近馳名的備份大師了!他可以很輕快的就將我們的整個 partition 搞定的非常的完美!在還原方面也是非常的快速且操作簡便!由於個人桌上型電腦所使用的資料量通常不大,所以當 ghost 完成之後,通常只要將資料燒錄到光碟片當中,大約只要一至兩片的光碟片也就綽綽有餘囉!那麼將光碟片保存好,這就是最簡易的資料備份模式囉!此外,由於個人的資料變動性不大,所以資料的備份頻率方面也不需要非常的頻繁!
 
但是,萬一您提供的是『Internet』上面服務的主機資訊呢?!怎麼辦?舉個例子來說,像是我們 TnLUG 同好領導者之一的『阿基』兄,他提供的 Internet 服務是 BBS ,您曉得嗎? BBS 的資料量雖然不大,但是由於他的文件是天天在增加的,每天都有相當多的資訊流入,由於某些資訊都是屬於重要的人物之留言,這個時候,我們能夠讓機器死掉嗎?再提到最近VBird的討論區曾經掛點的問題,以及數週前 Study-Area 討論區掛點的問題,討論區一旦掛點的話,該資料庫內容如果損毀到無法救回來,嘿嘿!要曉得討論區可不是一個人的心血耶!有的時候(像 Study-Area 討論區)是一群熱心 Linux 的朋友們互相建立交流起來的資料流通網,如果死掉了,那麼不是讓這些熱血青年的熱情付之一炬了嗎?!所以囉,建立備份的策略是相當的重要的。
 
基本上,『電腦是一個相當不可靠的機器』這句話在大部分的時間內還是成立的!常常會聽到說『要電腦正常的工作,最重要的是要去拜拜!』嘿嘿!不要笑!這還是真的哩!尤其是在日前一些電腦周邊硬體的生產良率 ( 就是將硬體產生出來之後,經過測試,發現可正常工作的與不能正常工作的硬體總數之比值 ) 越來越差的情況之下,電腦的不穩定狀態實在是越來越嚴重了!舉個例子來說,我曾經同時買過同一廠牌的 IxM 30GB 硬碟三顆,回來之後經過一個星期,嘿嘿!掛掉了兩顆!其中一棵是有壞軌,另外一棵是『完全死掉』,拿去公司要求修理,結果呢?嗯!店家直接拿了一棵新的給我,害我嚇一跳,店家的工程師說『唉呀!目前這個牌子的良率太差了,所以代理商為了怕麻煩,都會直接拿新的替換給我們啦!』要曉得的是,當初那一棵完全死掉的硬碟,是我用來備份我的主機資料的....好在當時我將備份的資料放在三四的地方,還好....
 
所以囉!由於電腦 ( 尤其是目前的電腦,操作頻率太高、硬體良率太差、使用者操作習慣不良、『某些』作業系統的當機率太高.... ) 的穩定性較差,所以囉!備份的工作就越來越重要了!
 
那麼 Linux 在備份時考慮的因素有哪些呢?
 
  1. 備份哪些檔案:

  2. 例如在帳號管理那一篇當中,我們知道最起碼主機的帳號資訊在/etc/*及/home/*等等檔案都是重要的!
     
  3. 選擇什麼備份的媒介:

  4. 是可讀寫光碟、另一棵硬碟、同一顆硬碟的不同 partition、還是使用網路備援系統?哪一種的速度最快,最便宜,可將資料保存最久?
     
  5. 考慮備份的方式:

  6. 是完全備份(類似 ghost)還是部分備份即可?
     
  7. 備份的頻率:

  8. 例如 MySQL 資料庫是否天天備份、若完全備份,需要多久進行一次?
     
  9. 備份使用的工具為何:

  10. 是 tar 還是 cpio 等等?
底下我們就來談一談這些問題的解決之道吧! ^_^

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

具有備份意義的檔案通常可以粗分為兩大類,一類是系統一類則是類似網路服務的資料庫,那麼各有哪些檔案需要備份的呢?我們就來稍微分析一下。
  • 主機系統需要備份的檔案

  • 這方面的檔案主要跟『帳號』有關係!主要有哪些帳號的檔案需要備份呢?就是 /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/ 也最好備份一下!
  • 網路服務的資料庫方面:

  • 這部份的資料可就多而且複雜了,如果您的網路套件設定都是以原廠提供的為主,那麼您的設定檔案大多是在 /etc 底下,所以這個就沒啥大問題了!但是若您的套件大多來自於自行的安裝,那麼 /usr/local 這個目錄可就相當的重要了!這裡我們假設我們提供的服務套件都是使用原廠的 RPM 安裝的!所以要備份的資料檔案有:
    • 資料設定檔案:

    • /etc/ 整個目錄
      /usr/local/ 整個目錄
    • 系統 www + MySQL:

    • /var/www 整個目錄 ( 系統的家目錄 )
      /var/lib/mysql 整個目錄
    • 其他你在 Linux 主機上面提供的資料庫資料檔案!
  • 推薦需要備份的目錄:

  • 由上面的介紹來看的話,那麼如果您的硬體或者是由於經費的關係而無法全部的資料都予以備份時, VBird 建議您至少需要備份這些目錄呦!
    • /boot
    • /etc
    • /home
    • /root
    • /usr/local
    • /var(註:這個目錄當中有些暫存目錄則可以不備份!)
  • 不需要備份的目錄:

  • 有些資料是不需要備份的啦!例如我們在 檔案與目錄系統 裡頭提到的 /proc 這個目錄是在記錄目前系統上面正在跑的程序  ( processes ) ,這個資料根本就不需要記錄的呢!所以就把他拿掉!此外,外掛的機器,例如 /mnt 裡面都是掛載了其他的硬碟裝置、光碟機、軟碟機等等,這些也不需要備份吧!?所以囉!底下有些目錄可以不需要備份啦!
    • /dev :這個隨便你要不要備份
    • /proc:這個真的不需要備份啦!
    • /mnt :如果你沒有在這個目錄內放置你自己系統的東西,也不需要備份
    • /tmp :幹嘛存暫存檔!不需要備份!

選擇的備份裝置

在備份的時候,選擇一個『資料存放的地方』也是很需要考慮的一個因素!什麼叫做資料存放的地方呢?講個最簡單的例子好了,我們知道說,較為大型的機器都會使用 tap 這一種磁帶機來備份資料,而如果是一般個人電腦的話,很可能是使用類似 Mo 這一種可讀寫式光碟片來存取資料!但是您不要忘記了幾個重要的因素,那就是萬一您的 Linux 主機被偷了呢?這不是不可能的,我們隔壁校區的研究室曾經遭小偷,裡面所有的電腦都被偷走了!包括『 Mo 片』,當他們發現的時候,一開始以為是硬體被偷走了,還好,他們都有習慣進行備份,但是很不幸的,這一次連『備份的 MO 都被拿走了!』怎麼辦?!只能道德勸說小偷先生能夠良心發現的將硬碟拿回來囉!唉~真慘....
這個時候,所謂的『遠端備援系統』就顯的相當的重要了!什麼是遠端備援呀!說的太文言了!呵!簡單的說,就是將你的系統資料『備份』到其他的地方去,例如說我的機器在台南,但是我還有另一部機器在高雄老家,這樣的話,我可以將台南機器上面重要的資料都給他定期的自動的 ftp 回去!也可以將家裡重要的資料給他丟到台南來!這樣的最大優點是可以在台南的機器死掉的時候,即使是遭小偷,也可以有一個『萬一』的備份所在!但是缺點是~~頻寬嚴重的不足!在這種狀態下,所能採取的策略大概就是『僅將最重要的資料給他 ftp 回去囉!』至於一些只要系統從新安裝就可以回覆的咚咚!那就沒有這個必要了!當然囉,如果你的網路是屬於 T1 專線的話,那麼完整備份將資料丟到另一地去,呵呵!也是很可行的啦!只是我沒有那麼好命....唉~窮學生一個~
在此同時,我們再來談一談,那麼除了這個『相對較為安全的備份』方法之外,畢竟這種網路備援系統實在是太耗頻寬了!如果像我們一般家用的 ADSL 根本就是吃不消!那麼怎麼辦!還有其他的方法嗎?喔~那就只好使用近端的裝置來備份囉!這也是目前我們最常見到的備份方法!例如一般我們使用的 Tap, Mo, Zip, CD-RW, 還有備份用抽取式硬碟等等!那麼在選擇上需要注意些什麼呢?需要注意的地方有幾點:
  • 速度要求:『備份』基本上在 Linux 主機上面也是蠻耗系統資源的!因為需要將系統的資料拷貝到其他裝置上面去,這個時候 CPU 幾乎是 loading 100%!您總不希望系統就這樣給他掛點吧!?此外,有些系統的資料實在太多咯,怎麼樣也備份不完!所以囉,越快的儲存裝置是越好的!如果您是個重視速度甚於一切的人,那麼我覺得抽取式硬碟是個不錯的方式,只不過.....目前我知道的抽取式硬碟都需要冷開機才行,不太符合 Linux 主機 24 小時全年無修的狀態....所以,近年來速度越來越快的 MO, CD-RW 就變的很方便囉!至於 tap ,在速度上完全是落後的.....至於使用第二顆硬碟備份,類似 Raid, 或者是安裝一顆備份的硬碟在 Linux 系統當中,這個方案也很好,而且速度上絕對是最具優勢的!但是就如同我們剛剛提到的,萬一你的機器被偷了,連帶的,這顆備份的硬碟自然也就不見了.....
  • 儲存容量:這也是一個需要考量的因素!而且常常是最大考量的因素呢!雖然目前硬碟越來越便宜(前兩天 2002/07/01 去網路上看一下價格,下一跳, 80GB 的硬碟已經不到 4000 就有了!天那.....),但是畢竟就如同前面說的,抽取式硬碟需要將系統冷開機,而建構在系統內的硬碟又同時具由不安全的成分在,這個時候一個大容量的替代方案就顯的很重要了!雖然 CD-RW 與 MO 可以提供不錯的速度,但是其容量畢竟不足(目前 MO 最大大約可到 1.3G ),所以說,具有大容量的 tap (磁帶容量最小的一款也可以到達 8 GB 左右!)就相當的具有這方面的優勢了!而且攜帶方便,存放也容易!更可以帶著走~~
  • 經費與資料可靠性:在經費不短缺的情況下,我們當然會建議您上面的幾個裝置都買一買,然後分別在不同的時間進行不同的備份作業(底下我們有些建議的啦! ^_^)!但是如果經費也是需要考量的話,那麼磁帶機這個目前還算貴重的物品可能暫時還動不到!這個時候近來漸漸便宜的 CD-RW 就顯的活躍的多了!而且光碟片也可以保存很久的ㄋㄟ~當然,目前應該不會有人以軟碟來備份了吧!?呵呵!軟碟可是相當不安全的(每次我看到有人拿軟碟拷貝資料,我都會要他 copy 完成之後,立刻到另外一部電腦 copy 出來試看看,果不其然,十次裡面有八次對方的軟碟片都有問題~)
無論如何,如果經費夠的話, Tap 備份資料真的是一個不錯的點子!因為他的高容量讓我好滿意!再來,如果經費稍微短缺的話,那麼 CD-RW 經常性的將資料燒錄下來,這也是蠻好的,尤其 CD 片又不佔空間!再來,如果還是沒有辦法,那麼一顆內建在 Linux 的硬碟用來備份也是不錯的!什麼!!連備份的硬碟都沒有,唉!怎麼跟我一樣~這個時候沒辦法啦,用原來的安裝系統的硬碟,多留一個 partition 用來當作備份之用吧(這也是目前我常用的方法之一!)
一些裝置的檔案代號
  • 光碟機: /dev/cdrom
  • 磁帶機: /dev/st0 ( SCSI 介面 ), /dev/ht0 ( IDE 介面 )
  • 軟碟機: /dev/fd0, /dev/fd1
  • 硬碟機: /dev/hd[a-d][1-16] ( IDE 介面 ), /dev/sd[a-p][1-16] ( SCSI 介面 )
  • 印表機: /dev/lp[0-2]

  • 特別留意的是磁帶機呦!如果你有錢的話,那麼買一部磁帶機是相當不錯的建議!沒錢的話,買 IDE 介面的硬碟也很不錯!! ^_^

備份的種類

    講了好多口水了,還是沒有講到重點,真是的....好了,再來提到那個備份的種類,其實前面已經提到一些了!基本上,備份就可以直接分為『完全備份』與『部分備份』這兩方面:

  • 完全備份(Full Backup):

  • 完全備份就是將根目錄『 / 』裡頭所有的資料都給他一股腦兒的備份下來,不過,這個時候所需要的『時間與備份裝置的容量』就顯的相當的重要了!用在大型的企業是有一定的需求的,但是像我們這一種小網站的話,完整的備份似乎太過於浪費的(畢竟我們可以用時間換取金錢....了不起又重新安裝了....)。但是剛剛完成的系統(還沒有對外 Internet 上面服務)通常可以的話,就趕快給他備份一下吧!這樣的一個備份是最乾淨的!用在系統的最乾淨還原是相當有幫助的!這是因為有的時候我們的系統被入侵了,但是 root 並不知道,這個時候老是拿最近的備份資料來還原也沒有用呀!因為連同被 cracker 修改過的檔案也被我們備份下來了呀!呵呵!所以囉,將一個最原始的系統的資料備份下來還是有其必要性的!此外,這種完整備份的頻率可不能太高,因為太耗系統資源了

  • 部分備份(Implement backup)

  • 部分備份就如同上面提過的,備份那些最重要的資料就好了!反正系統不見的話,只要重新安裝就回來了,資料只要妥善的備份重點資料,那麼系統的復原還是一個很快速的工作!以我為例,我通常都喜歡僅備份最重要的資訊,因為重新安裝一次系統時間花的並不長(一個鐘頭內一定可以搞定!)而帳號、服務設定、原本系統的資料庫、等等,幾乎都只要 copy 回來就 OK 了!例如:我們這個網站在開始營運初期,雖然交通流量很大了,還是常出狀況,那個時候重新安裝了好幾次(似乎是硬體的問題!),每次都是一個下午就搞定了!所以囉,我是一直認為『重點備份』就真的是蠻重要的!尤其很多時候,你的資料被吃掉都只是『某個網路服務』,那麼如果僅進行完整備份的工作時,呵呵!單單是將系統先讀出來,再取出所要還原的部分,呵呵!就可以累死你了....
如同上面提到的,這兩個方式各有優缺點啦!那麼如果可能的話,是否兩個都來進行一下最好呢?呵呵!答對了!給你拍拍手!我們通常的規劃就是這樣,重點部分的備份頻率較高,可能每天都需要備份的!至於如果是完整備份的話,那麼一個星期、甚至一個月在備份一次都可以!目前我的系統上面就是每天備份 MySQL 資料庫,然後每個星期備份所有的重要資料!

備份的工具選擇

好了,選定了備份的裝置與備份的頻率之後,那麼我要使用什麼方式來備份呀!呵呵!這個也要跟備份的種類相互配合呢!通常我在備份的時候,除非有磁帶機或者有特殊的功用,否則通常我只使用 tar 啦!但是這裡我們介紹一下 cpio 這個東西!如果你有磁帶機的話, cpio 可是相當好用的一個指令呢! ^_^  ,呵呵!由於這兩個指令我們早在『壓縮工具』當中稍微提過了,請再自行過去瞧一瞧去囉!另外,您或許會問道:『那麼我為什麼不直接給他 copy 過去備份的地點就好了呢!?』呵呵!既然可以在 copy 的過程裡面增加壓縮的功能來減低整個儲存空間的消耗,為何不壓縮?!那當然還是壓縮一下比較好囉!所以啊!我還是比較喜歡 tar, cpio 的啦!
完整備份的工具
在完整備份的工具裡面,三個工具 tar, cpio 與 dump 都很常被使用!但是我沒有使用過 dump ,所以這裡就不談他!至於 cpio 的話,他最大的好處就是『 cpio 連一般的裝置檔都可以 copy 過來!』很棒吧!所以使用 cpio 進行完整備份是很棒的一個選擇。不過需要注意的是,由於 cpio 需要配合 find 才可以正常的動作!這裡請特別留意囉!另外,使用 cpio 常常配合另一顆完全用來備份的硬碟或者是磁帶機才好!至於完整的指令用法請到 『壓縮工具』 那一篇去查看囉!備份與反備份分別可以這樣使用:
 
1. 使用 cpio 來備份與反備份
[root @test /root]# find / -print | cpio -covB > /dev/st0 <==備份至 tap 
[root @test /root]# cpio -iduv < /dev/st0         <==由 tap 將資料存回系統中!

2. 使用 tar 來備份
[root @test /root]# tar -zcvPf host.tar.gz / --exclude /proc --exclude /mnt --exclude /tmp
[root @test /root]# tar -zxvf  host.tar.gz

這兩個工具都蠻好用的!尤其我特喜歡 tar 的用途!因為他相當的適合於另一顆硬碟的備份呢!

部分備份的基礎工具
至於部分備份方面,我們就以簡單的 tar 來說明一下吧!!假如我們需要備份的資料是每天的 MySQL 資料庫時,由於我想讓每天的資料都存成不同的檔案,而要分別檔案的新舊又以日期來分別最簡單了!所以我就可以這樣做:
 
[root @test /root]# tar -zcvf mysql.`date +%Y-%m-%d`.tar.gz /var/lib/mysql
如果忘記了上面的指令代表什麼意思,那麼請回到 bash 那一章去瞧一瞧吧!

[root @test /root]# tar -N '2002/07/05' -zcvf home.tar.gz /home
只有在比 2002/07/05 還要新的檔案,在 /home 底下的檔案才會被打包進 home.tar.gz 中!

這樣就能將 mysql 的資料庫壓縮備份至 mysql.2002-07-06.tar.gz 這個檔案,並且日期會每天都不一樣!呵呵!這樣一來如果系統的資料庫出了問題,就可以馬上的回復了!而且還有很多的檔案可供回復呢!不錯吧!此外,也可以利用類似上面的第二個範例的例子,將最新的資料備份就好,其他的資料則不予以更動!嘿嘿!提供了更完善的方式呢!

大致的工具就是這樣了!此外,由於備份是長長久久的事業,所以我們需要的是『系統可以自己動作』的方式,您說是吧!所以呢,這個時候就需要使用到 cron 的服務啦!還記得我們先前講過的 例行性命令的建立 嗎?趕快在去複習一下呀!

VBird 的備份策略

其實我在備份的策略相當的簡單,我並沒有想要將整個系統完全的備份下來,因為太耗時間了!而且就我的立場而言,似乎也沒有這個必要,所以通常我只備份較為重要的檔案而已!不過,由於我需要備份 /home 與網頁資料,如果天天都備份,我想,系統遲早會受不了,所以我就將我的備份分為兩大部分,一個是每週備份,一個則是每日備份,備份的時間點都選擇在凌晨的 3~4 點左右!這個時候我就寫了兩個簡單的 scripts ,分別來儲存我的資料:
  1. 使用一顆加掛的硬碟來進行備份的功能,掛在 /disk2 當中;
  2. 每週進行的備份有 /home, /var, /etc, /boot, /usr/local 等目錄;
  3. 每日進行的目前僅有 MySQL 資料庫;
  4. 利用 /etc/crontab 來自動提供備份的功能;
  5. 在每週或每月定期的將資料分別 (a)燒錄到光碟上面 (b)使用網路傳輸到另一部機器上面。

  • 日常備份行為:

  • 底下提供我的備份的 scripts ,希望對大家有點幫助!
     
    [root @test /root]# vi backupweekly.sh
    #!/bin/bash
    # This file will backup
    #       1. username (in /etc, passwd, shadow, group, gshadow, aliases,
    #          aerosol510.mail, and /var/spool/mail, total 7 files)
    #       2. httpd (in /etc/httpd/conf, httpd.conf and /var/www/html
    #          /home/vbird will be tared !)
    #       3. smb (in /etc/samba/*, all files will be copied!)
    #       4. The safe and driver files
    #          /etc files
    #          /var/lib/mysql
    #
    # ===========================================================================
    # History
    # Make by VBird 2000/12/16 first time!
    # ============================================================================

    # 建立備份的路徑!這樣的好處是可以清楚的知道每個檔案放置的地點!
    usernamep=/disk2/backup/username
    httpdp=/disk2/backup/httpd
    smbp=/disk2/backup/smb
    otherp=/disk2/backup/others
    netpara=/disk2/backup/network
    ftpp=/disk2/backup/ftp

    #1. username, sendmail and their home directories and local setting
    cp /etc/passwd $usernamep
    cp /etc/shadow $usernamep
    cp /etc/group $usernamep
    cp /etc/gshadow $usernamep
    cp /etc/aliases $usernamep
    tar -zcf $usernamep/mail.tar.gz /var/spool/mail
    tar -zcf $usernamep/home.tar.gz /home
    tar -zcf $usernamep/usr.local.tar.gz /usr/local

    #2. httpd and mysql and counter data
    cp /etc/httpd/conf/httpd.conf $httpdp
    tar -zcf $httpdp/webcgi.tar.gz /var/www
    tar -zcf $httpdp/counter.tar.gz /usr/local/Counter/data
    /etc/rc.d/init.d/mysqld stop
    tar -zcf $httpdp/mysql.lib.tar.gz /var/lib/mysql
    /etc/rc.d/init.d/myslqd start

    #3. smb
    cp /etc/samba/lmhosts $smbp
    cp /etc/samba/MACHINE.SID $smbp
    cp /etc/samba/smb.conf $smbp
    cp /etc/samba/smbpasswd $smbp
    cp /etc/samba/smbusers $smbp

    #4. safe and drivers
    tar -zcf $otherp/etc.tar.gz /etc
    tar -zcf $otherp/mrtg.cfg.tar.gz /usr/local/mrtg-2/bin
    tar -zcf $otherp/virus.tar.gz /usr/local/virus
    cp /etc/cron.weekly/backup /$otherp

    #5. network parameters
    cp /etc/hosts           $netpara
    cp /etc/hosts.allow     $netpara
    cp /etc/hosts.deny      $netpara
    cp /etc/sysconfig/network               $netpara
    cp /etc/modules.conf                    $netpara
    cp /etc/sysconfig/network-scripts/ifcfg-eth0    $netpara

    #6. ftp services
    cp /etc/ftp*    $ftpp

     
    當然囉,上面的 script 是適合我的狀態,所以,你要使用的話,還得要修修改改呦!不要照著使用,會有問題的!

  • 每日備份資料 scripts:

  • 再來,繼續提供一下每日備份的資料:
     
    [root @test /root]# vi backupdaily.sh
    #!/bin/bash
    #
    # This program is created by VBird 2002/06/13
    #
    # What is this program?
    #       This program will backup the following messages:
    #       1. MySQL data files ( /var/lib/mysql );
    #       2. HTTP's CGI-directory ( /var/www/cgi-bin )
    #
    # HOW TO RUN THIS PROGRAM?
    #       Just put the file into /etc/crontab job,
    #       or put this file's link file to /etc/cron.daily!
    #
    ###############################################################
    # History
    #  Date         What                                    Who
    #==============================================================
    # 2002/06/13    First time to run this program
    #               The only backup files are MySQL and CGI VBird
    #==============================================================
    # 0. Get the date messages and backup directory
    day=`date +%Y-%m-%d`
    basedir="/disk2/backup/daily"

    # 1. MySQL  ( PATH = /var/lib/mysql )
    /etc/rc.d/init.d/mysqld stop
    cd /var/lib
    tar -zcf "$basedir"/mysql."$day".tar.gz mysql 2> /dev/null
    /etc/rc.d/init.d/mysqld start

    # 2. CGI ( PATH = /var/www/cgi-bin )
    cd /var/www
    tar -zcf "$basedir"/cgi-bin."$day".tar.gz cgi-bin 2> /dev/null

     
    好啦!這樣一來每天的 MySQL 資料庫就可以自動的被記錄在 /disk2/backup/daily 裡頭啦!而且還是檔案名稱會自動的改變的呦!呵呵!我很喜歡!OK!再來就是開始讓系統自己跑啦!怎麼跑?!就是 /etc/crontab 呀!提供一下我的相關設定呦!感謝網友 duncanlo 兄提供的好主意!在備份之前將 MySQL 資料庫的服務先 stop ,這樣一來在線上備份的時候會比較 OK !!
     
    [root @test /root]# vi /etc/crontab
    # 加入這兩行即可 ( 請注意您的檔案目錄!不要照抄呦! )
    # backup scripts
    30 3 * * 0 root /etc/root/backupweekly.sh
    30 2 * * * root /etc/root/backupdaily.sh
     
    這樣系統就會自動的在每天的 2:30 進行 MySQL 的備份,而在每個星期日的 3:30 進行重要檔案的備份!呵呵!您說,是不是很容易呢!?但是請千萬記得呦!還要將 /disk2 當中的資料 copy 出來才行耶!否則整部系統死掉的時候....那可不是鬧著玩的!


  • 遠端備援系統:

  • 除此之外,那麼還有沒有保險的方式呢?呵呵!剛剛前面不是提過遠端備援嗎?最簡單的說法就是『使用網際網路的方法,將你的資料送到遠端主機去備份!』那樣就 OK 啦!那麼我們怎麼使用遠端備份的方法呢?那就用最簡易的 FTP 吧!不過,在此之前,你必需要瞭解的是:
     
    1. 備份的資料最好『越精簡越好』;
    2. 遠端主機必需提供 FTP 服務(當然,其他的服務例如 sftp 也是可以的,只要能夠將資料傳上去就好了!)
    3. 遠端主機必需要可以符合你上傳的屬性設定,例如 quota 容量、儲存目錄的屬性等等!
     
    好了,那麼我們就用最簡單的自動FTP scripts來幫我們達成自動檔案上傳的功能吧!
     
    #!/bin/bash
    #
    # WHAT IS THIS:
    # This program will automatically put the backup file
    # from this host to another hosts
    #
    # HISTORY
    # When          Who     What
    # 2002/10/14    VBird   First time to release
    #
    ###################################################################
    # 1. input your FTP's ID and PassWord
      host="192.168.1.100"
      id="testing"
      pw='your.passwd'

    # 2. what is the correct and remote working directory
      basedir="/disk2/backup"            # 本機上面的欲上傳檔案路徑
      remodir="/disk2/backup_testinghost"      # 遠端主機欲備份的目錄

    # 3. the tar file
      filename="backup.testinghost.tar"

    # 4. starting tar work
    # 因為我將所有預備被傳送的資料都分門別類的放置在 /disk2/backup 這個目錄中,
    # 但是FTP傳送檔案的時候,畢竟一個檔案送完會比較容易與快速,
    # 所以我先將好幾個檔案 tar 成一個!
      cd $basedir
      tar -cvf $filename *

    ###################################################################
    # 5. 底下就是 ftp 自動連線並操作上傳手續的 script !
      ftp -n "$host" > "$basedir"/"$filename".log 2> "$basedir"/"$filename".log <<EOC
      user    $id         $pw
      binary
      cd      $remodir
      put     $filename
      bye
      EOC

    # 6. End of this file
    #    Please remenber, change permission of this file!
    #    Because there are many personal secure in this file!

     
    好了!大家趕緊寫一個適合自己的備份 script 來進行備份的行為吧!重要重要喔!
修改歷史:
  • 2002/07/06:第一次完成
  • 2003/02/12:重新編排與加入 FAQ
伺服器篇文件
各版本彙整說明
CentOS 6.x