武漢企業(yè)管理培訓(xùn)資訊:Linux系統(tǒng)下常用的數(shù)據(jù)備份方法

武漢
當(dāng)前位置:求學(xué)問(wèn)校網(wǎng)首頁(yè)>武漢資訊>武漢企業(yè)管理培訓(xùn)資訊

Linux系統(tǒng)下常用的數(shù)據(jù)備份方法

來(lái)源:求學(xué)問(wèn)校網(wǎng)     發(fā)表時(shí)間:2012-07-16     瀏覽 13

Linux作為新一代網(wǎng)絡(luò)操作系統(tǒng),在服務(wù)器方面的應(yīng)用越來(lái)越廣泛。作為專(zhuān)門(mén)的網(wǎng)絡(luò)服務(wù)器,一個(gè)重要功能就是對(duì)服務(wù)器數(shù)據(jù)進(jìn)行備份,以確保數(shù)據(jù)的安全。本文將介紹在Linux系統(tǒng)下一些常用的數(shù)據(jù)備份方法。

  1、本機(jī)上數(shù)據(jù)的手工備份

  Linux系統(tǒng)上配有功能強(qiáng)大的tar命令,可以靈活地備份數(shù)據(jù)。tar最初是為了制作磁帶備份而設(shè)計(jì)的把文件和目錄備份到磁帶中,然后從磁帶中提取或恢復(fù)文件。當(dāng)然,現(xiàn)在我們可以使用tar來(lái)備份數(shù)據(jù)到任何存儲(chǔ)介質(zhì)上。tar非常易于使用穩(wěn)定可靠,而且在任何 Linux系統(tǒng)上都有這個(gè)命令。因此是最經(jīng)常使用的備份工具。

  (1)使用tar命令備份數(shù)據(jù)的格式如下:

  $ tar cvf backup.tar /home/html

  上述命令是將/home/html 目錄下的所有文件打包成tar文件backup.tar。

  cvf是tar的命令參數(shù)。

  c代表創(chuàng)建一個(gè)檔案文件,

  v代表顯示每個(gè)備份的文件名字,

  f表示tar創(chuàng)建的檔案文件名是后面的backup.tar,

  /home/html 代表tar要備份的文件或和目錄名。

  (2)使用tar命令恢復(fù)數(shù)據(jù)的格式如下:

  $ tar xvf backup.tar

  上述命令將備份文件backup.tar恢復(fù)到當(dāng)前目錄下。

  通常情況下,tar對(duì)文件進(jìn)行備份的時(shí)候并不對(duì)文件進(jìn)行壓縮,因此備份文件的尺寸非常大。使用如下的命令,將使tar在備份結(jié)束以后,自動(dòng)使用gzip命令對(duì)備份文件進(jìn)行壓縮,得到一個(gè)相應(yīng)的gz文件。

  $ tar zcvf backup.tar.gz /home/html

  這樣,我們可以得到壓縮文件backup.tar.gz。

  backup.tar.gz是壓縮的備份文件。

  2、本機(jī)數(shù)據(jù)的自動(dòng)備份

  使用上述命令,我們可以手工備份數(shù)據(jù),但是每天定時(shí)做這些操作可能比較繁瑣。當(dāng)然,Linux為我們提供了強(qiáng)大的工具來(lái)進(jìn)行自動(dòng)備份。這就是cron。

  cron是一個(gè)后臺(tái)進(jìn)程,一旦啟動(dòng),將根據(jù)自己的配置文件定時(shí)地執(zhí)行任務(wù)。我們可以編寫(xiě)一個(gè)shell腳本文件來(lái)進(jìn)行文件備份,然后讓cron定時(shí)地啟動(dòng)這個(gè)腳本文件來(lái)對(duì)數(shù)據(jù)進(jìn)行備份。

  例如,我們每天備份/home/html目錄下的所有的文件到/home/admin/backup/backup_xxxx目錄下,xxxx代表備份的日期。這個(gè)工作,可以編寫(xiě)一個(gè)如下的shell腳本backup.sh來(lái)進(jìn)行:

  #!/bin/sh

  cd /home/admin/backup

  year=`date +%Y`

  month=`date +%m`

  day=`date +%d`

  now=$year-$month-$day

  mkdir backup_$now

  tar zcvf backup_$now/backup.tar.gz /home/html

  這個(gè)腳本在備份數(shù)據(jù)的時(shí)候,自動(dòng)讀取系統(tǒng)日期,然后以系統(tǒng)當(dāng)前的日期建立一個(gè)新的目錄,將備份的數(shù)據(jù)打包壓縮放在這個(gè)目錄中。我們可以在系統(tǒng)中通過(guò)執(zhí)行:$sh backup.sh ,完成備份工作。如果鍵入:$chmod +x backup.sh ,可以將backup.sh設(shè)置為可運(yùn)行。這樣,我們就可以直接通過(guò)鍵入$./backup.sh來(lái)運(yùn)行備份腳本文件了。一般情況下,我們希望在系統(tǒng)負(fù)載不是最大的時(shí)候來(lái)進(jìn)行數(shù)據(jù)備份。通常,我們可以選擇每天的凌晨3:00來(lái)進(jìn)行數(shù)據(jù)備份(這段時(shí)間,你的服務(wù)器訪問(wèn)的人數(shù)應(yīng)該最少吧?)。把一切工作交給 cron吧。 cron啟動(dòng)以后,它檢查/var/spool/cron/目錄中的配置文件來(lái)找到所要執(zhí)行的任務(wù)和執(zhí)行任務(wù)的時(shí)間,依據(jù)這些設(shè)定在規(guī)定的時(shí)間執(zhí)行規(guī)定的任務(wù)。

  這個(gè)任務(wù)配置文件可以由crontab -e 命令來(lái)編輯。

  其格式為每行代表一個(gè)任務(wù)和規(guī)定的執(zhí)行時(shí)間。

  每行由6個(gè)域組成:

  分鐘小時(shí)每月的天月星期命令

  上述6個(gè)域之間用空格或Tab分開(kāi),其中:

  分鐘:分鐘域,值的范圍是0到59

  小時(shí):小時(shí)域,值的范圍是0到23

  每月的天:日期,值的范圍是1到31

  月份:月份,值的范圍是1到12

  星期:星期,值的范圍是0到6,星期日值為0 命令。

  所要運(yùn)行的命令特別的,如果一個(gè)域是‘*’,表明命令可以在該域所有可能的取值范圍內(nèi)執(zhí)行。如果一個(gè)域是由連字符隔開(kāi)的兩個(gè)數(shù)字,表明命令可以在兩個(gè)數(shù)字之間的范圍內(nèi)執(zhí)行(包括起止兩個(gè)數(shù)字本身)。如果一個(gè)域是由逗號(hào)隔開(kāi)的一系列值組成的,表明命令可以在這些值組成的范圍內(nèi)執(zhí)行?,F(xiàn)在,我們編寫(xiě)一個(gè)文件,用以在每天的凌晨3:00啟動(dòng)備份shell程序。

  鍵入:crontab -e 命令,

  然后輸入: 0 3 * * * backup.sh 輸入完成后,存盤(pán)退出。

  鍵入crontab -l 來(lái)檢查剛才的輸入是否正確。好了,這樣只要Linux服務(wù)器不關(guān)機(jī),每天凌晨3:00cron都會(huì)自動(dòng)啟動(dòng)backup.sh腳本來(lái)對(duì)數(shù)據(jù)進(jìn)行備份的。你就可以高枕無(wú)憂(yōu)了。

  FMS的備份方法

  一、備份數(shù)據(jù)說(shuō)明:

  Foxmail Server系統(tǒng)的數(shù)據(jù)分為以下幾種:

  郵件數(shù)據(jù):存在于系統(tǒng)相應(yīng)目錄中。這是比較重要的數(shù)據(jù),主要是存放所有用戶(hù)的郵件內(nèi)容,郵件信息,郵箱信息,過(guò)濾器信息。

  目錄結(jié)構(gòu)為:[郵件數(shù)據(jù)存放根目錄](méi)/[服務(wù)域名]/[用戶(hù)帳號(hào)第一個(gè)字母小寫(xiě)]/[用戶(hù)帳號(hào)]/[郵箱結(jié)構(gòu)]。例如,在默認(rèn)安裝的情況下一個(gè)在 bodachina.com域中的admin用戶(hù)他的郵箱目錄為:/home/webmail/bodachina.com/a/admin用戶(hù)信息數(shù)據(jù):存在于數(shù)據(jù)庫(kù)中。存放的是用戶(hù)的個(gè)人信息,如用戶(hù)名,密碼等。

  用戶(hù)地址本數(shù)據(jù):存在與OPENLDAP中。主要是用來(lái)存放用戶(hù)的地址本信息。在默認(rèn)安裝的情況下,數(shù)據(jù)存放在/usr/local/var /openldap-ldbm日志文件:包括郵件服務(wù)器日志文件,WEB服務(wù)器日志文件等,存在于各個(gè)服務(wù)器相關(guān)目錄中。在默認(rèn)安裝的情況下,WEB服務(wù)器的日志文件會(huì)存放在/usr/local/resin/log;郵件服務(wù)器的日志文件回存放在/var/log/qmail的目錄中。

  臨時(shí)數(shù)據(jù):存放在系統(tǒng)臨時(shí)目錄中,通常是/tmp/webuser目錄,用來(lái)存放系統(tǒng)的臨時(shí)數(shù)據(jù)。

   二、數(shù)據(jù)備份方法說(shuō)明

  數(shù)據(jù)備份分為以下步驟:

  建立備份數(shù)據(jù)存放目錄、日志存放目錄。用戶(hù)可以把備份數(shù)據(jù)存放在/home/foxmail/backup;對(duì)郵件數(shù)據(jù)進(jìn)行打包。根據(jù)不同的系統(tǒng)安裝情況,郵件數(shù)據(jù)目錄可能不同。默認(rèn)情況下,郵件數(shù)據(jù)目錄被定在/home/webmail/下。具體情況請(qǐng)查閱系統(tǒng)安裝手冊(cè)。打包命令:

  cd /home/

  tar vcvf maildata.tar.gz webmail mv maildata.tar.gz /home/foxmail/backup/xxx_maildata.tar.gz其中xxx是一個(gè)事件注釋。

  對(duì)用戶(hù)信息從數(shù)據(jù)庫(kù)中倒出,備份。具體命令是:mysqldump –u[數(shù)據(jù)庫(kù)用戶(hù)名] –p[數(shù)據(jù)庫(kù)密碼] [數(shù)據(jù)庫(kù)名] > userdata.sql

  默認(rèn)情況下,系統(tǒng)安裝的數(shù)據(jù)庫(kù)用戶(hù)名,密碼和數(shù)據(jù)庫(kù)名都是:qmail

  導(dǎo)出后,請(qǐng)把userdata.sql移動(dòng)到備份數(shù)據(jù)存放目錄中。具體命令:

  cd /home/foxmail/backup

  mysqldump –uqmail –pqmail qmail >xxx_userdata.sql

  或者直接把數(shù)據(jù)庫(kù)目錄打包備份,在mysql數(shù)據(jù)庫(kù)存放數(shù)據(jù)的目錄下可以看到一個(gè)名叫qmail的數(shù)據(jù)庫(kù),用戶(hù)可以用上面的打包方式對(duì)qmail數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)備份。

  對(duì)地址本數(shù)據(jù)進(jìn)行備份。對(duì)OPENLDAP的數(shù)據(jù)目錄進(jìn)行打包。默認(rèn)情況下是 /usr/local/var/目錄,具體命令:tar zcvf addrdata.tar.gz [LDAP數(shù)據(jù)目錄名],并把數(shù)據(jù)包移動(dòng)到備份數(shù)據(jù)存放目錄下,方法與上面類(lèi)似?;蛘哂脩?hù)可以使用OPENLDAP的命令進(jìn)行備份:ldapsearch –b ‘o=FOXMAIL’ objectclass=* -x –H ldap://192.168.1.227:1212 >ldapdata.ldif如果用戶(hù)地址本數(shù)據(jù)太多能會(huì)出現(xiàn)搜索上限問(wèn)題,可以修改OPENLDAP的配置文件來(lái)解決這個(gè)問(wèn)題。修改方法是:在/usr/local/etc/openldap/slapd.conf文件中插入:

  sizelimit 50000

  對(duì)日志文件進(jìn)行備份。通常是備份郵件服務(wù)器日志和WEB服務(wù)器日志。默認(rèn)情況下,郵件服務(wù)器日志目錄為/var/log/qmail/,而WEB服務(wù)器日志存放于/usr/local/resin/log/目錄下。請(qǐng)把相關(guān)文件打包,移動(dòng)到日志存放目錄中。

  對(duì)臨時(shí)數(shù)據(jù)進(jìn)行刪除。在系統(tǒng)運(yùn)行了一段時(shí)間后,系統(tǒng)數(shù)據(jù)目錄中,會(huì)積累了一定容量的臨時(shí)數(shù)據(jù)。為了提高系統(tǒng)的效率和空余系統(tǒng)磁盤(pán)空間,請(qǐng)把臨時(shí)數(shù)據(jù)刪除。具體方法是:把FoxmailServer停掉,命令FoxmailServer stop;把臨時(shí)目錄中的所有目錄刪除(默認(rèn)在/tmp/webuser/下),進(jìn)入/tmp/webuser/,把這個(gè)目錄中的所有目錄和文件,一并刪除。

  三、用cron對(duì)FMS進(jìn)行數(shù)據(jù)備份

  1、增加cron紀(jì)錄:

  crontab–e

  增加紀(jì)錄行:0 3 * * * /home/foxmail/bin/backup.sh

  2、創(chuàng)建腳本:/home/foxmail/bin/backup.sh

  #!/bin/sh

  year=`date +%Y`

  month=`date +%m`

  day=`date +%d`

  now=$year-$month-$day

  mkdir /home/foxmail/backup/$now

  cd /home/mysql/data/

  tar zcvf /home/foxmail/backup/$now/mysql_qmail.tar.gz qmail

  cd /usr/local/var/

  tar zcvf /home/foxmail/backup/$now/openldap-ldbm.tar.gz openldap-ldbm

  tar zcvf /home/foxmail/backup/$now/openldap-slurp.tar.gz openldap-slurp

  cd /home/

  tar zcvf /home/foxmail/backup/$now/webmail.tar.gz webmail

  通過(guò)以上兩個(gè)步驟就可以在每天三時(shí)對(duì)系統(tǒng)數(shù)據(jù)做一個(gè)備份,不過(guò)在大用戶(hù)量的情況下,就不必對(duì)webmail做每天的備份,因?yàn)檫@樣很快就會(huì)占滿(mǎn)所有硬盤(pán)空間??梢詁ackup.sh中把相應(yīng)的行注釋掉。

  數(shù)據(jù)備份方法說(shuō)明:

  當(dāng)系統(tǒng)出現(xiàn)災(zāi)難性故障,可以通過(guò)恢復(fù)備份數(shù)據(jù)來(lái)恢復(fù)系統(tǒng),步驟如下:

  把郵件數(shù)據(jù)備份包maildata.tar恢復(fù)到系統(tǒng)的郵件數(shù)據(jù)存放目錄中;把用戶(hù)信息備份文件userdata.sql恢復(fù)到數(shù)據(jù)庫(kù)中,具體方法是:用數(shù)據(jù)庫(kù)帳號(hào)進(jìn)入數(shù)據(jù)庫(kù)(默認(rèn)為qmail);通過(guò)命令show tables獲取所有表信息;通過(guò)命令drop table [表名],把所有表刪除;退出數(shù)據(jù)庫(kù);通過(guò)命令mysql –u[用戶(hù)名] –p[用戶(hù)密碼] [數(shù)據(jù)庫(kù)名] < userdata.sql,重新把備份數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)。

  把地址本備份信息覆蓋原來(lái)的數(shù)據(jù)文件,默認(rèn)情況是/usr/local/var下的openldap的相關(guān)文件。

  小結(jié)

  實(shí)際備份腳本backup.sh:

  #!/bin/sh

  year=`date +%y`

  month=`da

  te +%m`

  day=`date +%d`

  now=$year-$month-$day

  exp tbpf/tbpf@ora9i file=/home2/tbpf_backup/TbpfDB$now.dmp owner=tbpf

  cd /home2/tbpf_backup/

  tar zcvf /home2/tbpf_backup/tbpf_backup_tar/TbpfDB$now.tar.gz TbpfDB$now.dmp

  rm -rf TbpfDB$now.dmp

  te +%m`

  day=`date +%d`

  now=$year-$month-$day

  exp tbpf/tbpf@ora9i file=/home2/tbpf_backup/TbpfDB$now.dmp owner=tbpf

  cd /home2/tbpf_backup/

  tar zcvf /home2/tbpf_backup/tbpf_backup_tar/TbpfDB$now.tar.gz TbpfDB$now.dmp

  rm -rf TbpfDB$now.dmp