上次寫過一篇《用BackWPup自動備份WordPress到Dropbox》,
但BackWPup是Wordpress的插件,非Wordpress用戶就沒法用。
而且Wordpress本來體積就很大了,使用太多的插件會影響其速度,能少用一個就少用一個。

如果你是vps用戶或者對主機有Root權限,可以使用腳本來實現BackWPup插件備份到Dropbox的功能

一、登錄Dropbox並創建一個APP

如果你還沒有註冊Dropbox,可以通過這個地址註冊:https://db.tt/DjBuAekm

登錄之後,通過這個地址:https://www.dropbox.com/developers/apps

點擊Create an app創建一個APP,填寫相關信息之後,選擇Full Dropbox之後點擊Create創建。

二、下載Dropbox-Uploader

下載地址:https://github.com/andreafabrizi/Dropbox-Uploader

下載之後上傳至VPS的root目錄。

三、賦予執行權限並綁定Dropbox APP

用SSH執行,建議使用xshell

賦予Dropbox-Uploader.sh執行權限

chmod +x dropbox_uploader.sh

然後綁定APP

./dropbox_uploader.sh info

按提示分別輸入App key和App secret,然後輸入 Y 確認;

之後會出現如下畫面:
使用腳本定時自動備份VPS數據到Dropbox
複製圖中的鏈接在瀏覽器中打開(可能需要翻牆)並點擊Allow綁定APP,然後回到Xshell按Enter
之後可以執行下面的命令測試上傳,提示Done就是綁定成功了。

./dropbox_uploader.sh upload /etc/passwd /backup/passwd.old

四、添加自動備份腳本

在Xshell中執行:

vi backup.sh

按 i 進入編輯模式
適當修改以下內容後,複製粘貼進去

#!/bin/bash
DROPBOX_DIR="/backup/$(date +%Y-%m-%d)" #Dropbox上的備份目錄
mysql_USER="root" #數據庫帳號
MYSQL_PASS="123456" #數據庫密碼
YM_DATA=/etc/nginx #nginx配置目錄
BACK_DATA=/home/backup #本地備份文件存放目錄,手動創建
DATA=/home/www #網站數據存放目錄

#定義數據庫的名字和舊數據庫的名字
DataBakName=Data_$(date +"%Y%m%d").tar.gz
WebBakName=Web_$(date +%Y%m%d).tar.gz
YMName=YM_$(date +%Y%m%d).tar.gz
OldData=Data_$(date -d -6day +"%Y%m%d").tar.gz
OldWeb=Web_$(date -d -6day +"%Y%m%d").tar.gz
OldYM=YM_$(date -d -6day +"%Y%m%d").tar.gz

#定義Dropbox舊數據的名字(30天前)
Old_DROPBOX_DIR=/backup/$(date -d -30day +%Y-%m-%d) #Dropbox上的備份目錄

#刪除本地6天前的數據
rm -rf $BACK_DATA/$OldData $BACK_DATA/$OldWeb $BACK_DATA/$OldYM

cd $BACK_DATA

#使用命令導出SQL數據庫,並且按數據庫分個壓縮
for db in `mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
    (mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
done
#壓縮數據庫文件合併為一個壓縮文件
tar zcf $BACK_DATA/$DataBakName $BACK_DATA/*.sql.gz
rm -rf $BACK_DATA/*.sql.gz

#壓縮網站數據
cd $DATA
tar zcf $BACK_DATA/$WebBakName ./*

#壓縮域名配置數據
cd $YM_DATA
tar zcf $BACK_DATA/$YMName ./*

cd ~
#開始上傳
./dropbox_uploader.sh upload $BACK_DATA/$DataBakName $DROPBOX_DIR/$DataBakName
./dropbox_uploader.sh upload $BACK_DATA/$WebBakName $DROPBOX_DIR/$WebBakName
./dropbox_uploader.sh upload $BACK_DATA/$YMName $DROPBOX_DIR/$YMName

#開始刪除遠程30天前的文件
./dropbox_uploader.sh delete $Old_DROPBOX_DIR/

echo -e "Thank you! all down"

腳本來自hostloc論壇,其中我修改了一部分。
ESC鍵退出編輯模式,
輸入:wq
然後按Enter保存並退出。

五、賦予腳本權限

在Xshell執行

chmod +x backup.sh

六、設置定時任務

執行

crontab -e

在最後加入

00 03 * * * /root/backup.sh

表示每天凌晨三點執行備份腳本。
如果你的VPS是nano編輯器(最上有nano字樣),加入之後按Ctrl+OF3並按Enter保存,然後按Ctrl+XF2退出;
另一種是vi編輯器,需要先按i鍵進入編輯模式,在末尾輸入上面的命令之後,按ESC鍵,輸入:wq ,再按Enter保存並退出即可。
更多Crontab使用方法請看:http://www.vpser.net/manage/crontab.html

七、最後重啟Crontab

service cron restart

重啟之後就設置完成了……

如果你不知道服務器當前時間,可以使用下面的命令;

查看當前時間:

date -R

修改當前時區:

cp /usr/share/zoneinfo/主時區/次時區 /etc/localtime

例如:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

即修改服務器時區為上海。