數據長期備份方法

1.本機上數據的手工備份
    Linux系統上配有功能強大的tar命令,可以靈活地備份數據。tar最初是爲了製作磁帶備份而設計的把文件和目錄備份到磁帶中,然後從磁帶中提取或恢復文件 。當然,現在我們可以使用tar來備份數據到任何存儲介質上。tar非常易於使用穩定可靠,而且在任何Linux系統上都有這個命令。因此是最經常使用的備份工具。 使用tar命令備份數據的格式如下:
    $ tar cvf backup.tar /home/html 上述命令是將/home/html 目錄下的所有文件打包成tar文件backup.tar。
    cvf是tar的命令參數。
    c代表創建一個檔案文件,
    v代表顯示每個備份的文件名字,
    f表示tar創建的檔案文件名是後面的backup.tar,
    /home/html 代表tar要備份的文件或和目錄名。
     使用tar命令恢復數據的格式如下:
    $ tar xvf backup.tar 上述命令將備份文件backup.tar恢復到當前目錄下。
    通常情況下,tar對文件進行備份的時候並不對文件進行壓縮,因此備份文件的尺寸非常大。
    使用如下的命令,將使tar在備份結束以後,自動使用gzip命令對備份文件進行壓縮,得到一個相應的gz文件。$ tar zcvf backup.tar /home/html 這樣,我們可以得到兩個文件,backup.tar和backup.tar.gz。backup.tar.gz是壓縮的備份文件。
    2.本機數據的自動備份
    使用上述命令,我們可以手工備份數據,但是每天定時做這些操作可能比較繁瑣。 當然,Linux爲我們提供了強大的工具來進行自動備份。這就是cron。cron是一個後臺進程,一旦啓動,將根據自己的配置文件定時地執行任務。我們可以編寫一個shell腳本文件來進行文件備份,然後讓cron定時地啓動這個腳本文件來對數據進行備份。
    例如,我們每天備份/home/html目錄下的所有的文件到/backup_xxxx目錄下,xxxx代表備份的日期。這個工作,可以編寫一個如下的shell腳本backup.sh來進行:
    #/bin/sh cd / year=`date +%Y` month=`date +%m` day=`date +%d` now=$year-$month-$day mkdir /backup_$now tar zcvf /backup_$now/backup.tar /home/html 這個腳本在備份數據的時候,自動讀取系統日期,然後以系統當前的日期建立一個新的目錄,將備份的數據打包壓縮放在這個目錄中。
    我們可以在系統中通過執行:$sh backup.sh ,完成備份工作。如果鍵入:$chmod +x backup.sh ,可以將backup.sh設置爲可運行。這樣,我們就可以直接通過鍵入$./backup.sh來運行備份腳本文件了。 一般情況下,我們希望在系統負載不是最大的時候來進行數據備份。
    通常,我們可以選擇每天的凌晨3:00來進行數據備份(這段時間,你的服務器訪問的人數應該最少吧?)。把一切工作交給cron吧。 cron啓動以後,它檢查/var/spool/cron/crontabs/目錄中的配置文件來找到所要執行的任務和執行任務的時間,依據這些設定在規定的時間執行規定的任務。這個任務配置文件可以由crontab -e 命令來編輯。
    其格式爲每行代表一個任務和規定的執行時間。每行由6個域組成: 分鐘 小時 每月的天 月 星期 命令 上述6個域之間用空格或Tab分開,其中: 分鐘:分鐘域,值的範圍是0到59 小時:小時域,值的範圍是0到23 每月的天:日期,值的範圍是1到31 月份:月份,值的範圍是1到12 星期:星期,值的範圍是0到6,星期日值爲0 命令:所要運行的命令 特別的,如果一個域是,表明命令可以在該域所有可能的取值範圍內執行。如果一個域是由連字符隔開的兩個數字,表明命令可以在兩個數字之間的範圍內執行(包括起止兩個數字本身)。如果一個域是由逗號隔開的一系列值組成的,表明命令可以在這些值組成的範圍內執行。
    現在,我們編寫一個文件,用以在每天的凌晨3:00啓動備份shell程序。鍵入:$crontab -e 命令,然後輸入: 0 3 * * * backup.sh 輸入完成後,存盤退出。鍵入$corntab -l 來檢查剛纔的輸入是否正確。 好了,這樣只要Linux服務器不關機,每天凌晨3:00cron都會自動啓動backup.sh腳本來對數據進行備份的。你就可以高枕無憂了。
    3. 雙機自動備份
    對於一個專業的網管人員來說,千萬不要把所有的數據都存放在一臺計算機上。不然,一旦這臺計算機的硬盤壞了,那麼一切就完了。 所以雙機備份(不是雙機熱備份,雙機熱備份是雙機實時地備份數據,那可不是一件簡單的事情)是商業服務器數據安全的基本要求。我們這裏的雙機備份是雙機定時地備份文件,而不是實時的。 要實現雙機備份,你可以先在單機上備份所有的文件以後,然後再把備份文件傳輸到其它的機器上。但是這樣可能比較麻煩,而且有不足之處。
    例如,這樣作對於不需要備份的文件也要在網絡上傳輸,會造成帶寬的浪費。 當然Linux爲我們提供了更好的辦法,這就是使用Mirror。Mirror是個由Perl(Practical Extraction and Report Language)所寫的程序,它利用ftp將不同機器間的文件和整個目錄進行復制。Mirror的重要特性就是在ftp之前會比較文件的日期和大小,避免不需要備份的文件被ftp傳輸,而且還支持壓縮傳輸。 Mirror的下載地址爲: http://www.asiacharts.com/dl.asp﹖id=736 或ftp//sunsite.org.uk/packages/mirror/mirror.tar.gz 運行 tar zxvf mirror.tar.gz 解壓文件。然後運行perl install.pl 安裝mirror。安裝後,修改mirror.default配置文件。這一文件中包括遠端主機remote site 名稱或IP地址、備份文件存放路徑、登錄名稱、登錄密碼,本地local 主機名稱或IP地址、需要備份的目錄、是否將資料壓縮、使用何種壓縮程式、以及完成備份後Mirror將用mail通知誰等等設定。 我修改後的mirror.default配置文件例子爲: # ... package=defaults # The LOCAL hostname - if not the same as `hostname` # I advertise the name sunsite.org.uk but the machine is # really swallow.sunsite.org.uk.  hostname=192.168.0.119 本機的IP地址或者是域名 # Keep all local_dirs relative to here local_dir=/home/html/ 本機上要備份文件存放的目錄 # The local_dir must exist FIRST #local_dir_check=true remote_password=ilovelinux 遠端機器上的ftp口令 mail_[email protected] 備份完成後郵件通知的地址 # Don't mirror file modes. Set all dirs/files to these dir_mode=0755 file_mode=0444 # By defaults files are owned by root.zero user=0 group=0 # # Keep a log file in each updated directory # update_log=.mirror update_log= # Don't overwrite my mirror log with the remote one. # Don't pull back any of their mirror temporary files. # nor any FSP or gopher files... # .... # .... 注意,在設置文件中,hostname、local_dir、remote_password、mail_to必須設置,其它的可以不設置。 接下來,編輯一個文件,在這個文件中設置要備份的遠程主機的域名或者是地址,遠程主機上的要備份的文件所在的目錄和備份的文件存放在本地主機上的目錄位置。 例如文件名爲backup.mir,其內容爲: package= comment= site=192.168.0.1 # where to start pulling files back from remote_dir=/home/html # where to put the files on your machine local_dir=/home/backup/html # If you are under Windws then use a line like this instead # local_dir=c:\tmp\mirror 運行 mirror -d backup.mir,執行備份任務。當然,我們同樣可以將mirror的執行任務放在cron裏面執行,這樣可以實現雙機的自動備份。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章