WP空間的Dropbox自動備份指令碼

來源:互聯網
上載者:User

如果你的空間是linux系統,空間比較大的話,擁有SSH許可權,那麼恭喜你,你可以用這段指令碼來實現自動備份整個wp到空間上或者Dropbox上了。

指令碼doBackWebSite.sh利用linux的crontab功能實現自動定時備份功能,並自動刪除到期的備份檔案,節約空間,程式預設為刪除備份前三天的指令碼,當然你可以在指令碼中自動制定的;-) ,下面介紹指令碼使用過程。 

1.  指令碼內容如下

doBackWebSite.sh

#!/bin/bash#*********************************************************## File   :  doBackWebSite.sh                        ## Perpose:  自動備份並刪除指定天數的前的備份檔案        ## Atuthor:  吳澤君                                        ## WebSite:  www.fly3q.com                                 ## Date   :  2010-06-25                                    ## Modify :  2010-06-29 增加Dropbox備份支援                ##*********************************************************##*********************************************************## Local   Variable                              ##*********************************************************##空間的更目錄HOME_DIR="~"#網站內容放置的檔案WS_DIR="fly3q.com"#放置備份的檔案夾BK_DIR="back"#Dropbox放置備份的檔案夾Dropbox_BK_DIR="Dropbox/WPBack"#Dropbox安裝目錄Dropbox_BK_DIR=".dropbox-dist"#網站備份名字BACK_FILE_NAME=$WS_DIR`date +%Y%m%d`".tgz"  #*********************************************************## function : auto_back_files                              ## Input    : $1 is_back_to_dropbox - 是否備份到dropbox    ##            - true/false           ##*********************************************************#function auto_back_files(){cd ~if [ ! -d $BK_DIR ];thenmkdir -p $BK_DIRficd $WS_DIRtar -czf $BACK_FILE_NAME *mv $BACK_FILE_NAME ../$BK_DIRecho "[OK]    BACK UP $BACK_FILE_NAME"if [ -n $1 -a "$1" = "true" ];thenmove_back_to_dropboxfi}#*********************************************************## function : move_back_to_dropbox                         ## Input    : 將網站備份到Dropbox                          ##*********************************************************#function move_back_to_dropbox(){  if [ -z ` ps auxawk -F" " '{print $11}'grep '^/home/[^]*[dropbox]'` ];thencd ~/$BK_DIR/$Dropbox_BK_DIRdropboxd &  fi  if [ -d Dropbox ];thencd Dropboxif [ ! -d WPBack ];thenmkdir WPBackficd ~/$Dropbox_BK_DIRcp ~/$BK_DIR/$BACK_FILE_NAME .echo "[OK]    $BACK_FILE_NAME had benn back to Dropbox."  else    echo "[FAIL]  You had not installed Dropbox,please first install Dropbox."  fi}#*********************************************************## function : auto_delete_last_back_files                  ## Input    : $1 offset_day - 自動刪除指定前幾天的備份檔案 ##    - 預設刪除前3天的備份檔案      ##*********************************************************#function auto_delete_last_back_files(){  local year=`date '+%Y'`  local month_of_year=`date '+%m'sed s/^0//`  local day_of_month=`date '+%d'sed s/^0//`  local offest=3  local index=1  local month=(0)  local day=(0)  while [ $index -le 12 ];  domonth[$index]="$index"let index+=1  done  index=1  while [ $index -le 31 ];  do    day[$index]=$indexlet index+=1  done  if [ -n "$1" ];thenoffest=$1  fi  ret_day=  let ret_day=$day_of_month-$offest  if [ $ret_day -le 9 ];thenif [ $ret_day -le 0 ];thenlet ret_month=$month_of_year-$ret_day/31-1if [ $ret_month -le 9 ];thenret_month="0"$ret_monthfilet index=31+$ret_day%31ret_day=${day[$index]}if [ $ret_day -le 9 ];thenret_day="0"$ret_dayfielseret_day="0"$ret_dayfi  fi  if [ -n "$ret_month" ];thenret_month=`echo $ret_monthsed s/^0//`ret_month="0"$ret_month  elseret_month="0"$month_of_year  fi  ret_year=$year  ret_date=$ret_year$ret_month$ret_day  ret_bck_file_name=$WS_DIR$ret_date".tgz"  cd ~  cd $BK_DIR  if [ -f $ret_bck_file_name ];then#rm -fr $ret_bck_file_nameecho "[OK]    DELETE $ret_bck_file_name"  else    echo "[FAIL]  $ret_bck_file_name NOT EXIST!!"  fi  cd ~  if [ -d $Dropbox_BK_DIR ];thencd $Dropbox_BK_DIRif [ -f $ret_bck_file_name ];then#rm -fr $ret_bck_file_nameecho "[OK]    DELETE Dropbox BackFile->$ret_bck_file_name."elseecho "[FAIL]  Dropbox BackFile->$ret_bck_file_name NOT EXIST."fi  fi}auto_back_files trueauto_delete_last_back_files

2.  SSH 登陸空間

建一個目錄back的目錄,放這個指令碼到這個back目錄裡面。

3.  配置crontab

輸入crontab -e,來配置linux自動啟動並執行情況,具體的參數配置可以參考本博另外一篇關於crontab文章。

例如我的配置如下:

22  22 *   *     1-7  cd /home/user1/back/;bash doBackWebSite.sh

表示每天22:22分執行doBackWebSite.sh指令碼完成自動備份的功能。

4. 安裝Dropbox

Dropbox是一個能夠線上隱藏檔並提供版本版本的管理的雲端儲存體服務。具體請參考http://wiki.dropbox.com。

安裝步驟參考http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall

$ cd ~

$ cd wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

$ tar -zxof dropbox.tar.gz

$ mv .dropbox-dist ~

$ cd ~

$ ~/.dropbox-dist/dropboxd &

此時會提示一串URL,要求你在瀏覽器裡面輸入這串URL將這台虛擬機器主機連到Dropbox上,登陸之後你就可以看到提示這台機子已經連到了dropbox上了。

註:這邊第一次需要這樣配置,以後系統會儲存登陸狀態就不需要去手動輸入URL了,這也是這個指令碼能夠實現自動備份到上面的關鍵。

通過ps auxgrep dropbox查看dropbox是否已經運行起來了,有的話恭喜你dropbox配置成功了。

5.  完成配置

第一次請手動運行doBackWebSite.sh,已完成連結虛擬機器主機到dropbox。

這樣每天就會自動地把你的網站進行備份了,通過ls -oh 你可以查看備份的情況。同時如果配置了接收郵箱的話,系統crontab也會自動的發出一封執行結果的郵件

Cron cd /home/user1/back/;bash doBackWebSite.sh

[OK] BACK UP fly3q.com20100629.tgz

[OK] fly3q.com20100629.tgz had benn back to Dropbox.

[OK] DELETE fly3q.com20100626.tgz

[FAIL] Dropbox BackFile->fly3q.com20100626.tgz NOT EXIST.

這邊我還沒有備份fly3q.com20100626.tgz到dropbox上所以失敗了,嘿嘿。

同時查看dropbox的Event裡面可以看到 

6.  總結

這個指令碼完全是屬於硬性的打包備份,備份檔案還是放在空間裡面,也可能說還是不安全,那麼當然你可以在你的機子上來完成自動備份遠端主機檔案,然後ftp下到本地來,這樣就不用擔心空間出現問題不能及時恢複了。這個實現也很簡單的,你的機子執行自動運行備份,自動登陸ssh,一切都搞定,如果有需要的話,我可以分享出來。

但是考考慮到我們網速的問題,這個想法也就放棄了,但是我想到一個更好的辦法,放到微軟25G的skydrive上去,但是它不提供相應的api的呀,只是有一個非官方的.netapi,要是有更簡單的jsapi就好了,如果大家有什麼好的點子歡迎討論。

現在受到月光部落格一篇文章的啟發,我把備份放到了dropbox上,呵呵,也算是實現了雲端儲存吧。隨便提下國外的主機上傳到dropbox速度就是快的呀,我打包檔案60M基本上就是一分鐘左右,就搞定了,羨慕這樣的網速。




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。