Linux(Centos)全自動異地備份資料(WEB+Mysql)

來源:互聯網
上載者:User

標籤:

文章開始之前,先問下各位站長一個問題:什麼東西對於站長是十分重要的?其實對於站長而言,很多東西都是很重要的。但我們現在排除外在因素,把範圍縮小到網站系統本身,哪些是非常重要的呢?網站資料就是其中之一了。

網站資料包括程式檔案本身、網站運行過程中不斷產生的附件資料(圖片、文檔、視頻等)以及資料庫檔案,三大塊總括為網站資料。

以 自己為例,在這兩年多的站長經曆來看,最讓我痛苦的就是某一天起床,一直苦心經營的網站打不開了,檢查過DNS也正常,最後詢問空間電訊廠商發生什麼事了, 獲知的結果系:伺服器硬碟損壞,所有資料無法恢複(在這備忘下:一般小站長買的機器或者空間都很低配置的,所以別想有什麼資料備份服務,要就加錢買),結 果就是一陣陣的失落。如果網站剛上線運行不久就發生這樣的事或者還不會那麼心痛,從頭再來也不難。假如是一個運行若干年的網站,突然發生這麼一次意外就可 以說是重重一擊。

剛成為站長的前幾個月,我對資料備份這個事情壓根沒考慮過,直到有一天在群裡看到有位群友痛心的經曆——網站徹底崩潰,資料全沒!!那是經營了3年多的一個老站,就麼倒下了,真是聞者傷心聽者落淚(有點誇張了)。

我 看到了這樣活生生的樣板,不做資料備份的後果很嚴重。所以我現在總結出一個經驗:如果真要用心做一個網站,就一定要做好資料備份工作,而且最好能異地備 份,有些朋友以為在機器本地做了備份就樂了,放心了,那就大錯。對於備份資料,又要面臨一個實際的問題:每次都自己上伺服器把相關的資料打包,然後再用 FTP下載回來嗎?這樣時間長了就會累,所以今天就以Linux(Centos 5.5)環境講講如何?全自動遠程(異地)對全站資料進行備份。

要實現自動遠程備份功能需要的關軟體有:伺服器(本地環境)要安裝lftp,遠程端要開啟FTP服務,對登入的目錄有讀寫權限,具備以上2個條件即可。

如果機器上沒有安裝lftp這個工具,可以通過以下命令完成:

#yum install lftp

 

假設把相關的指令檔存放在/apps/script目錄下

#vi /apps/script/autobackup.sh //輸入以下內容

#!/bin/bash

#author: www.5ishare.com

echo "backup job start"

#設定要備份的網站目錄,即是網站的根目錄

file=/apps/wwwdata

#設定本地備份目錄,用於存放打包後的檔案

backpath=/apps/bkdata/

dbuser=資料庫使用者名稱

#資料密碼,要記得用單引號將把整個密碼引起來,如果密碼中有單引號就用雙引號,嘿嘿

dbpwd=‘資料庫密碼‘

dbname=資料庫名稱

domain=遠程端的網域名稱或者IP地址

user=FTP使用者名稱

userpwd=‘FTP使用者密碼‘

bkdate=$(date +%Y%m%d)

sqlfile_sql=${dbname}_${bkdate}.sql

sqlfile_gz=${dbname}_${bkdate}.tar.gz

sqlfp=${backpath}${bkdate}/$sqlfile_sql

if [ -e $backpath${bkdate} ]

then

        echo $backpath is exists.

else

        mkdir -p $backpath${bkdate}

fi

#執行Database Backup,/apps/mysql/bin/mysqldump修改為你實際環境的路徑

/apps/mysql/bin/mysqldump -u $dbuser -p$dbpwd $dbname > ${sqlfp}

#對備份之後的資料庫檔案壓縮,或者在Database Backup時通過加入參數直接進行壓縮

tar zcf $backpath${bkdate}/$sqlfile_gz -C ${backpath}${bkdate} ${sqlfile_sql}

#刪除未壓縮SQL的檔案

rm -f ${sqlfp}

#產生的檔案名稱格式:web_網站目錄名_20130419.tar.gz

fn=web_${file##*/}_${bkdate}.tar.gz

tar zcf $backpath${bkdate}/$fn -C ${file%/*} ${file##*/}

#以下操作為FTP自動連接並把本地檔案上傳到異地伺服器上

/usr/bin/lftp ${domain} << END

user ${user} ${userpwd}

lcd ${backpath}

mirror -R ${bkdate}

exit

END

echo "backup job done"

------------分隔線--------------

儲存退出之後,為該指令碼增加執行許可權

#chmod +x /apps/script/autobackup.sh

#crontab –e //添加定時任務,根據具體需求設定備份間隔

#0 4 1,16 * * /apps/script/autobackup.sh

我設定為每月的1日,16日的零辰4點鐘執行備份任務。最好不要在大白天做這些操作,因為會讓整個系統明顯變慢的。

經過以上配置,站長們就不用再愁資料備份的煩惱了,可以說是一勞永逸。以上僅為個人實際應用寫,跟其各自的需求可能不大一樣,但本質不變,只要稍作修改即可,如果有其它疑問歡迎大家留言交流學習。

Linux(Centos)全自動異地備份資料(WEB+Mysql)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.