Linux資料備份手冊

xsdan發表於2009-12-28
Linux作為新一代網路作業系統,在伺服器方面的應用越來越廣泛。作為專門的網路伺服器,一個重要功能就是對伺服器資料進行備份,以確保資料的安全。本文將介紹在Linux系統下一些常用的資料備份方法。 [@more@]

1、本機上資料的手工備份

Linux系統上配有功能強大的tar命令,可以靈活地備份資料。tar最初是為了製作磁帶備份而設計的把檔案和目 錄備份到磁帶中,然後從磁帶中提取或恢復檔案。當然,現在我們可以使用tar來備份資料到任何儲存介質上。tar非常易於使用穩定可靠,而且在任何 Linux系統上都有這個命令。因此是最經常使用的備份工具。

(1)使用tar命令備份資料的格式如下:

$ tar cvf backup.tar /home/html

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

cvf是tar的命令引數。

c代表建立一個檔案檔案,

v代表顯示每個備份的檔名字,

f表示tar建立的檔案檔名是後面的backup.tar,

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

(2)使用tar命令恢復資料的格式如下:

$ tar xvf backup.tar

上述命令將備份檔案backup.tar恢復到當前目錄下。

通常情況下,tar對檔案進行備份的時候並不對檔案進行壓縮,因此備份檔案的尺寸非常大。使用如下的命令,將使tar在備份結束以後,自動使用gzip命令對備份檔案進行壓縮,得到一個相應的gz檔案。

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

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

backup.tar.gz是壓縮的備份檔案。

2、本機資料的自動備份
使用上述命令,我們可以手工備份資料,但是每天定時做這些操作可能比較繁瑣。當然,Linux為我們提供了強大的工具來進行自動備份。這就是cron。

cron是一個後臺程式,一旦啟動,將根據自己的配置檔案定時地執行任務。我們可以編寫一個shell指令碼檔案來進行檔案備份,然後讓cron定時地啟動這個指令碼檔案來對資料進行備份。

例如,我們每天備份/home/html目錄下的所有的檔案到/home/admin/backup/backup_xxxx目錄下,xxxx代表備份的日期。這個工作,可以編寫一個如下的shell指令碼backup.sh來進行:

#!/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

這個指令碼在備份資料的時候,自動讀取系統日期,然後以系統當前的日期建立一個新的目錄,將備份的資料打包壓縮放在這 個目錄中。我們可以在系統中透過執行:$sh backup.sh ,完成備份工作。如果鍵入:$chmod +x backup.sh ,可以將backup.sh設定為可執行。這樣,我們就可以直接透過鍵入$./backup.sh來執行備份指令碼檔案了。一般情況下,我們希望在系統負載 不是最大的時候來進行資料備份。通常,我們可以選擇每天的凌晨3:00來進行資料備份(這段時間,你的伺服器訪問的人數應該最少吧?)。把一切工作交給 cron吧。 cron啟動以後,它檢查/var/spool/cron/目錄中的配置檔案來找到所要執行的任務和執行任務的時間,依據這些設定在規定的時間執行規定的 任務。

這個任務配置檔案可以由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 輸入完成後,存檔退出。

鍵入crontab -l 來檢查剛才的輸入是否正確。好了,這樣只要Linux伺服器不關機,每天凌晨3:00cron都會自動啟動backup.sh指令碼來對資料進行備份的。你就可以高枕無憂了。

FMS的備份方法
一、備份資料說明:

Foxmail Server 系統的資料分為以下幾種:

郵件資料:存在於系統相應目錄中。這是比較重要的資料,主要是存放所有使用者的郵件內容,郵件資訊,郵箱資訊,過濾器資訊。
目錄結構為:[郵件資料存放根目錄]/[服務域名]/[使用者帳號第一個字母小寫]/[使用者帳號]/[郵箱結構]。例如,在預設安裝的情況下一個在bodachina.com域中的admin使用者他的郵箱目錄為:
/home/webmail/bodachina.com/a/admin
使用者資訊資料:存在於資料庫中。存放的是使用者的個人資訊,如使用者名稱,密碼等。
使用者地址本資料:存在與OPENLDAP中。主要是用來存放使用者的地址本資訊。在預設安裝的情況下,資料存放在/usr/local/var/openldap-ldbm
日誌檔案:包括郵件伺服器日誌檔案,WEB伺服器日誌檔案等,存在於各個伺服器相關目錄中。在預設安裝的情況下,WEB伺服器的日誌檔案會存放在/usr/local/resin/log;郵件伺服器的日誌檔案回存放在/var/log/qmail的目錄中。
臨時資料:存放在系統臨時目錄中,通常是/tmp/webuser目錄,用來存放系統的臨時資料。
二、資料備份方法說明

資料備份分為以下步驟:

建立備份資料存放目錄、日誌存放目錄。使用者可以把備份資料存放在/home/foxmail/backup;
對郵件資料進行打包。根據不同的系統安裝情況,郵件資料目錄可能不同。預設情況下,郵件資料目錄被定在/home/webmail/下。具體情況請查閱系統安裝手冊。打包命令:
cd /home/
tar vcvf maildata.tar.gz webmail
mv maildata.tar.gz /home/foxmail/backup/xxx_maildata.tar.gz
其中xxx是一個事件註釋。

對使用者資訊從資料庫中倒出,備份。具體命令是:
mysqldump –u[資料庫使用者名稱] –p[資料庫密碼] [資料庫名] > userdata.sql

預設情況下,系統安裝的資料庫使用者名稱,密碼和資料庫名都是:qmail

匯出後,請把userdata.sql移動到備份資料存放目錄中。具體命令:
cd /home/foxmail/backup
mysqldump –uqmail –pqmail qmail >xxx_userdata.sql

或者直接把資料庫目錄打包備份,在mysql資料庫存放資料的目錄下可以看到一個名叫qmail的資料庫,使用者可以用上面的打包方式對qmail資料庫進行資料備份。

對地址本資料進行備份。對OPENLDAP的資料目錄進行打包。預設情況下是 /usr/local/var/目錄,具體命令:tar zcvf addrdata.tar.gz [LDAP資料目錄名],並把資料包移動到備份資料存放目錄下,方法與上面類似。或者使用者可以使用OPENLDAP的命令進行備份:
ldapsearch –b ’o=FOXMAIL’ objectclass=* -x –H ldap://192.168.1.227:1212 >ldapdata.ldif
如果使用者地址本資料太多能會出現搜尋上限問題,可以修改OPENLDAP的配置檔案來解決這個問題。修改方法是:在/usr/local/etc/openldap/slapd.conf檔案中插入:

sizelimit 50000

對日誌檔案進行備份。通常是備份郵件伺服器日誌和WEB伺服器日誌。預設情況下,郵件伺服器日誌目錄為/var/log/qmail/,而WEB伺服器日誌存放於/usr/local/resin/log/目錄下。請把相關檔案打包,移動到日誌存放目錄中。
對 臨時資料進行刪除。在系統執行了一段時間後,系統資料目錄中,會積累了一定容量的臨時資料。為了提高系統的效率和空餘系統磁碟空間,請把臨時資料刪除。具 體方法是:把FoxmailServer停掉,命令FoxmailServer stop;把臨時目錄中的所有目錄刪除(預設在/tmp/webuser/下),進入/tmp/webuser/,把這個目錄中的所有目錄和檔案,一併刪 除。
三、用cron對FMS進行資料備份

1、增加cron紀錄:

crontab –e

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

2、建立指令碼:/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

透過以上兩個步驟就可以在每天三時對系統資料做一個備份,不過在大使用者量的情況下,就不必對webmail做每天的備份,因為這樣很快就會佔滿所有硬碟空間。可以backup.sh中把相應的行註釋掉。

資料備份方法說明:
當系統出現災難性故障,可以透過恢復備份資料來恢復系統,步驟如下:

把郵件資料備份包maildata.tar恢復到系統的郵件資料存放目錄中;
把使用者資訊備份檔案userdata.sql恢復到資料庫中,具體方法是:用資料庫帳號進入資料庫(預設為qmail);透過命令show tables獲取所有表資訊;透過命令drop table [表名],把所有表刪除;退出資料庫;
透過命令mysql –u[使用者名稱] –p[使用者密碼] [資料庫名] < userdata.sql,重新把備份資料匯入資料庫。
把地址本備份資訊覆蓋原來的資料檔案,預設情況是/usr/local/var下的openldap的相關檔案。
小結
實際備份指令碼backup.sh:

#!/bin/sh

year=`date +%y`

month=`date +%m`

day=`date +%d`

now=$year-$month-$day

exp 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

本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/solarium/archive/2008/04/12/2287750.aspx

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

相關文章