接觸CentOS已經(jīng)有幾個(gè)月的時(shí)間了,使用了太久的windows在剛接觸linux命令行界面的時(shí)候還真有點(diǎn)不太適應(yīng),但到最后也就應(yīng)了大家的那句話,跟linux接觸的時(shí)候越長(zhǎng),就越為她的簡(jiǎn)潔高效而折服,我手上有一臺(tái)服務(wù)器安裝的操作系統(tǒng)是CentOS5.4,上面部署的有網(wǎng)站和數(shù)據(jù)庫(kù)應(yīng)用,基本構(gòu)架:centos+nginx+mysql+php,但由于網(wǎng)站數(shù)據(jù)比較多,自己手動(dòng)備份的話太費(fèi)時(shí)間,所以就打算做一個(gè)自動(dòng)運(yùn)行的腳本,幫助我在每周的指定時(shí)間備份網(wǎng)站內(nèi)容和數(shù)據(jù)庫(kù)內(nèi)容,用tar打包,然后再傳到我另外一個(gè)ftp服務(wù)器上,整個(gè)備份過程就完成了。
假定這臺(tái)服務(wù)器的網(wǎng)站目錄為:/home/www,數(shù)據(jù)庫(kù)程序路徑為:/usr/local/mysql/bin,數(shù)據(jù)庫(kù)名為:levil,ftp服務(wù)器為:ftphost,下面先來看完整的自動(dòng)備份腳本(自動(dòng)備份腳本保存位置為:/home/backup.sh):
#!/bin/bash
cd /home
WebBakName=web_$(date +%y%m%d).tar.gz
tar zcvf $WebBakName www
SqlBakName=sql_$(date +%y%m%d).tar.gz
/usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql
tar zcvf $SqlBakName backup.sql
ftp -nv ftphost << EOF
user ftpname ftppass
put $WebBakName
put $SqlBakName
quit
EOF
rm -f backup.sql $WebBakName $SqlBakName
下面來給大家一一講解:首先進(jìn)入/home目錄,定義WebBakName變量為網(wǎng)站備份的文件名,文件名格式為web_日期.tar.gz,定義SqlBakName變量為數(shù)據(jù)庫(kù)備份的文件名,文件名格式為sql_日期.tar.gz,把整個(gè)網(wǎng)站目錄www打包到WebBakName文件名中,使用mysqldump導(dǎo)出指定數(shù)據(jù)庫(kù)內(nèi)容到backup.sql,然后把數(shù)據(jù)庫(kù)備份打包到SqlBakName文件中,本機(jī)備份工作至此結(jié)束,如果你沒有足夠大的遠(yuǎn)程ftp空間的話,可以直接把備份文件下載到本機(jī),但我還是建議直接備份到另外一個(gè)服務(wù)器上的ftp空間中,做到完全自動(dòng)化備份,這時(shí)你需要把腳本中的ftphost、ftpname和ftppass分別替換成你的ftp信息,整個(gè)備份過程就完成了。
接著輸入chmod +x backup.sh給腳本添加執(zhí)行權(quán)限,再輸入:crontab -e編輯任務(wù)自動(dòng)開始時(shí)間,比如我輸入:
00 05 * * 1 /home/backup.sh 就代表每周1的上午5點(diǎn)整執(zhí)行該自動(dòng)備份操作。
在這一切完成之后,你可以先把自動(dòng)任務(wù)時(shí)間改為當(dāng)前的接近時(shí)間,看自動(dòng)備份腳本是否工作正常,測(cè)試OK的話以后就不用擔(dān)心這臺(tái)服務(wù)器出現(xiàn)任何問題導(dǎo)致數(shù)據(jù)丟失了,當(dāng)然如果你的數(shù)據(jù)更新比較頻繁的話,建議把自動(dòng)備份時(shí)間調(diào)整為每日。