有人說你怎麼不備份呢?這個問題我也考慮過啊,其實你有沒有想過對於這種國外的vps什麼的,備份一下所有的網站怎麼說也得百十兆吧。
你總不能天天去下載吧?這頻寬可受不了,就算是頻寬充足,說不定vps哪天也讓你給下載掛了。
ok~切入正題,先說這個免費備份的問題,實際上也不免費,只是有個前提,那就是你在godaddy.com的買的有網域名稱,大家都知道在godaddy上買網域名稱可以免費申請空間的,對於不用這東西的來說實在是太浪費了,所以今天的主題就是針對那些在godaddy買過網域名稱有免費空間的盆友(在godaddy有網域名稱沒申請空間的可以去問問度娘穀哥)
那我們備份vps的原理就是利用shell指令碼備份網站以及資料庫,然後通過ftp指令碼吧備份檔案上傳到godaddy的免費空間,簡單吧。
那我就直接上指令碼了~嘿嘿。
下面這個是備份網站和資料庫的指令碼: 複製代碼 代碼如下:#!/bin/bash
#set -x
time=`date +%Y%m%d`
#下面是備份MySql
[ ! -e /backup/sqltmp ] && mkdir -p /backup/sqltmp #建立臨機操作備份mysql目錄
[ ! -e /backup/backsql ] && mkdir -p /backup/backsql #建立mysql備份的存放目錄
cd /backup/sqltmp
sql=`mysqlshow -u使用者名稱 -p密碼 |grep -v + | grep -Ev “Data|information|mysql|test” | awk {‘print $2′}` #查詢mysql資料庫裡出系統資料以外的網站資料庫,這裡可以根據需要修改
for sqlname in $sql
do
mysqldump -u使用者名稱 -p密碼 $sqlname > $sqlname.sql
done
tar zcvf backsql.$time.tar.gz *.sql
rm -rf *.sql
mv * ../backsql/.
cd ..
rm -rf sqltmp
#下面是備份網站
[ ! -e /backup/webtmp ] && mkdir -p /backup/webtmp #建立臨機操作備份web檔案目錄
[ ! -e /backup/backweb ] && mkdir -p /backup/backweb #建立web檔案備份的存放目錄
cd /backup/webtmp
tar zcvf backweb.$time.tar.gz /home/*
mv * ../backweb/.
cd ..
rm -rf webtmp
下面這個是上傳到通過ftp把備份網站上傳到godaddy空間上的指令碼: 複製代碼 代碼如下:#!/bin/bash
backsql=`cd /backup/backsql;ls -r backsql* | head -1` #因為每天都備份檔案取最新的那個
backweb=`cd /backup/backweb;ls -r backweb* | head -1`
ftp -n<<EOF
open ip #這裡寫godaddy空間的ip
user ftp使用者名稱 ftp密碼
binary
cd /back/ #備份檔案要存放的ftp上的路徑
lcd /backup/backsql/ #備份mysql檔案本地存放路徑
prompt
mput $backsql
lcd /backup/backweb/ #備份web檔案本地存放路徑
mput $backweb
close
bye
EOF
然後把這兩個指令碼做個crontab計劃任務就實現每天定時異地備份了,而且省時省力省錢。 複製代碼 代碼如下:[root@90itt.com ~]# crontab -e
01 0 * * * /root/backup.sh
0 5 * * * /root/ftp.sh