上次寫過一篇《用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 確認;
之後會出現如下畫面:
複製圖中的鏈接在瀏覽器中打開(可能需要翻牆)並點擊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+O或F3並按Enter保存,然後按Ctrl+X或F2退出;
另一種是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
即修改伺服器時區為上海。