博客或網站的備份是很重要的一個工作,因為經常會有一些VPS和空間商倒閉或跑路。而備份很重要的一點是異地備份,因為如果把備份仍然放在VPS上,很容易同博客一起全軍覆沒。如果每天手動將VPS上的數據備份,再下載到本身會耗費大量的時間和精力,老耿這幾天折騰VPS,在網上查了很多關于網站備份的資料,總結出兩種異地備份的方式,當然是自動進行的。
一種是通過腳本自動將數據打包通過FTP上傳到Godaddy的免費空間上,另一種是使用dropbox來備份,這兩種方式各有優缺點,下面來詳細介紹一下。
因為在Godaddy上每注冊一個域名,就會免費提供一個容量10G,每月流量300G的免費空間,在頁面上方會有一個大大的廣告,所以很少有人會用這個免費空間來建立網站,但用來備份VPS上的數據卻是很適合的,服務器之間的速度是非常快的,幾十M的數據傳輸,也是一瞬間的事兒。
這種方式的原理是將網站/博客的數據庫和數據打包,通過FTP的方式上傳到Godaddy的免費空間上,所以先需要在VPS上安裝一個lftp,登陸到SSH客戶端,輸入:
yum -y installlftp
首先建立一個自動備份數據庫的腳本,內容如下:
#!/bin/bash
/usr/local/mysql/bin/mysqldump -uusername -ppassword --databases blog > /home/wwwroot/backup/databackup_$(date +%Y%m%d).sql
tar zPcf /home/wwwroot/backup/databackup_$(date +%Y%m%d).sql.tar.gz /home/wwwroot/backup
/usr/bin/lftp -u ftpusername,ftppassword ftpip/backup -e "put /home/wwwroot/backup/databackup_$(date +%Y%m%d).sql.tar.gz;exit"
rm -r /home/wwwroot/backup/*
第一段中需要將username和password替換成數據庫的用戶名和密碼,注意與-u和-p之間不要有空格,意思是備份數據庫,并在/home/wwwrott/backup下生成一個按日期命令的文件。可以先通過SSH客戶端或WinSCP來查看mysqldump是否在/usr/local/mysql/bin/目錄下。將/home/wwwroot/backup/修改為自己的目錄。
第二段是將這個backup中的文件(其實就是剛剛的備份)壓縮。
第三段中需要將ftpusername、ftppassword、ftpip分別替換成Godaddy中FTP的連接信息,意思是將第二段中打好的壓縮包上傳到Godaddy的免費空間上去。可以直接上傳到根目錄,不過最好是在Godaddy中新建一個FTP帳號和目錄來保存這些備份。
第四段是將backup這個目錄中所有的文件刪除。
建議使用WinSCP來建立腳本,因為WinSCP中帶的編輯器有點類似記事本,使用起來比較方便,比如在/usr/local/nginx/conf目錄中建立一個名為dbbackup.sh的文件,然后將上述腳本代碼拷進去,把一些信息修改為自己的后保存即可。
檢查腳本運行,可以直接在SSH客戶端中輸入:
sh /usr/local/nginx/conf/dbbackup
檢查腳本運行是否成功。
使用SSH客戶端進入到dbbackup.sh所在的目錄,修改腳本權限:
chmod +x dbbackup.sh
然后將dbbackup.sh添加到計劃任務當中:
crontab –e
按"i"鍵編輯,并添加一行:
0 0 * * * sh /usr/local/nginx/conf/dabackup.sh
輸入完成后按ESC鍵退出編輯,輸入:wq保存,建立的這個計劃任務會保存在/var/spool/cron/root中。意思是每天0點0分時自動運行這個腳本實現每天自動數據庫的備份。
上一篇 Access的特點