定期備份WordPress到Dropbox

(2012-09-14 更新) 上個星期蛙齋主機被跟 Linux 很不熟的小蛙弄到完全沒有辦法開機,只好放出最後大絕-reinstall ><,重新安裝新系統之後發現…之前把 VPS 裝起來的過程是跌跌撞撞,有很多文件都沒有留下來…只能硬著頭皮慢慢把系統建回去,還好上一次找了一堆資料,寫了定期備份 WordPress 資料庫以及 /var/www的shell script,所以才能在一兩天內讓 VPS 可以正常運作!(否則以小蛙 Linux 的程度不知道要弄多久才會好 …),這篇文章備份一下小蛙自己的備份的 shell script,免得又遇到什麼不測風雲…
小蛙必須先寫在前面,小蛙對於 Linux 可以說是完全不熟悉,只會一些常常用到的操作,因此小蛙寫的 script 可能也會有不少問題,神經夠大條又懶得去找其他資料的網友可以「參考」小蛙的寫法,至少搭配上 crontab 後,這些 script 也是很盡職的做好備份的工作,當然如果有 Linux 強者有更好寫法的話,也歡迎留言讓小蛙以及其他網友參考!

工欲善其事必先利其器,先把 Dropbox 裝上去吧!小蛙要裝這個 dropbox 也找了很久 … 明明第一次裝的時候並沒有那麼麻煩,感覺一下就裝好了…小蛙參考 Official Debian/Ubuntu packages for Dropbox 這篇文章,其中有一些介紹,有興趣的網友可以點過去看看。

小蛙試過自己下載壓縮檔來執行,但總是會出現一堆奇奇怪怪的問題,最後使用上面那篇文章提到的方法,只有簡單三個指令
( 2012-09-14 更新) 小蛙在安裝另一台VPS的時候發現下面這個 repository 已經失效了,請參閱<<VPS安裝紀錄 – 安裝Dropbox>>。如果已經不小心新增了 repository,可以在 /etc/apt/sources.list.d/ 找到它們,再刪除即可!

1
2
3
$ sudo add-apt-repository ppa:hertzog/nautilus-dropbox
$ sudo apt-get update
$ sudo apt-get install nautilus-dropbox

如果這三個指令都過的了,就真的是太恭喜了,但小蛙偏偏第一個指令就卡住了「command not found」,以小蛙對Linux粗淺的了解,只要發現某個指令出現command not found,就試試看apt-get install 指令,搞不好就剛好可以裝到需要的套件(不知道這樣說對不對),問題又來了,照著輸入之後出現下面的問題

1
2
3
4
5
# apt-get install add-apt-repository
正在讀取套件清單... 完成
正在重建相依關係
正在讀取狀態資料... 完成
E: 找不到套件 add-apt-repository

喔耶!事情果然不像笨蛙所想的那樣簡單,上網查了一下原來「add-apt-repository」這個東東跟Python有關係,要使用這個指令必須先安裝

1
# apt-get install python-software-properties

安裝完成後再執行剛剛上面提到的三個指令,就完成Dropbox的安裝囉!直接透過「dropbox start」啟動Dropbox、「dropbox stop」來停止Dropbox,第一次啟動會跳出一個連結,點選該連結後輸入dropbox的帳號密碼後就可以正常使用了。
安裝Dropbox時小蛙遇到兩個問題也順便記錄下來:
(1) 小蛙的Dropbox被安裝到/root/Dropbox目錄下,如果移動該目錄會造成Dropbox卡在Connecting而無法使用。
(2) 有一次很奇怪的沒有出現認證連結,輸入dropbox start >> xxx,不知道為什麼把訊息輸出到xxx檔案中卻又出現連結 = = (2012-04-17 只要連續執行兩次以上 dropbox start 就會出現連結)

  • 備份Shell Script

backupProcess.sh (注意要有執行權限,ex. chmod 744 backupProcess.sh),.sh檔最上面一定要加上#!/bin/bash,否則會發生時間到卻一動也不動的情況(可參考crontab -e相關使用及問題 @ 蛙齋)。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 備份所有資料庫,不壓縮(也可以加入壓縮指令)
function backupDB(){
    mysqldump -u資料庫帳號 -p資料庫密碼 --all-databases > /root/Dropbox/vpsbackup/vps-databases-$(date +%Y%m%d).sql
}
# 備份 /var/www 目錄,並且壓縮(如果要備份其他的資料夾,也可以此類推)
function backupWWW(){
    tar -jpc -f /root/Dropbox/vpsbackup/www-$(date +%Y%m%d).tar.bz2 /var/www
}
# 備份 /etc 目錄
function backupEtc(){
    tar -jpc -f /root/Dropbox/vpsbackup/etc-$(date +%Y%m%d).tar.bz2 /etc
}
# 備份 /root 目錄,並且排除Dropbox資料夾
function backupRoot(){
    tar -jpc -f /root/Dropbox/vpsbackup/root-$(date +%Y%m%d).tar.bz2 /root --exclude=Dropbox
}
case  in
    "db")
        #執行備份db動作
        backupDB;
        ;;
    "www")
        #備份www資料夾
        backupWWW;
        ;;
    "etc")
        #備份/etc資料夾
        backupEtc;
        ;;
    "root")
        #備份/root/shell資料夾
        backupRoot;
        ;;
    *)
        #印出錯誤訊息及使用方式
        echo ""
        echo "Usage  : ./backupProcess.sh [db | www]"
        echo ""
        echo "  db   : backup all databases."
        echo "  www  : backup /var/www data."
        echo "  etc  : backup /etc/data."
        echo "  root : backup /root/shell data."
        echo ""
        ;;
esac
  • crontab定期執行備份動作

shell script寫完再來就是讓crontab定期執行囉!以下是小蛙的排程。

01
02
03
04
05
06
07
08
09
10
11
12
13
# crontab –e
# 每天早上三點五分備份/etc
5   3 * * *     /root/backupProcess.sh etc >> /root/log/etc.log
# 每天早上三點十分備份/root
10  3 * * *     /root/backupProcess.sh root >> /root/log/root.log
# 每天早上三點十五分備份database
15  3 * * *     /root/backupProcess.sh db >> /root/log/db.log
# 每個星期天上午三點半備份 /var/www 目錄
30  3 * * 0     /root/backupProcess.sh www >> /root/log/www.log
# 每天早上四點開啟dropbox
0   4 * * *     dropbox start >> /root/log/dropbox.log
# 每天早上四點三十分關閉dropbox
30  4 * * *     dropbox stop >> /root/log/dropbox.log

呼 ~ 希望這些備份檔可以備而不用!對Linux不熟悉的小蛙來說,重灌Linux真是一大夢魘。(2012-04-17 DirectSpace主機有安全性漏洞遭受攻擊,結果造成部分用戶資料全部遺失 … 太恐怖了)

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料