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