分享wp空间自动备份脚本-增加Dropbox备份支持

如果你的空间是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 ];then
		mkdir -p $BK_DIR
	fi
	cd $WS_DIR
	tar -czf $BACK_FILE_NAME *
	mv $BACK_FILE_NAME ../$BK_DIR
	echo "[OK]    BACK UP $BACK_FILE_NAME"
	if [ -n $1 -a "$1" = "true" ];then
		move_back_to_dropbox
	fi
}
#*********************************************************#
# function : move_back_to_dropbox                         #
# Input    : 将网站备份到Dropbox                          #
#*********************************************************#
function move_back_to_dropbox()
{
  if [ -z ` ps aux|awk -F" " '{print $11}'|grep '^/home/[^]*[dropbox]'` ];then
	cd ~/$BK_DIR/$Dropbox_BK_DIR
	dropboxd &
  fi

  if [ -d Dropbox ];then
	cd Dropbox
	if [ ! -d WPBack ];then
		mkdir WPBack
	fi
	cd ~/$Dropbox_BK_DIR
	cp ~/$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 ];
  do
	month[$index]="$index"
	let index+=1
  done
  index=1
  while [ $index -le 31 ];
  do
    day[$index]=$index
	let index+=1
  done
  if [ -n "$1" ];then
	offest=$1
  fi
  ret_day=
  let ret_day=$day_of_month-$offest
  if [ $ret_day -le 9 ];then
	if [ $ret_day -le 0 ];then
		let ret_month=$month_of_year-$ret_day/31-1
		if [ $ret_month -le 9 ];then
			ret_month="0"$ret_month
		fi
		let index=31+$ret_day%31
		ret_day=${day[$index]}
		if [ $ret_day -le 9 ];then
			ret_day="0"$ret_day
		fi
	else
		ret_day="0"$ret_day
	fi
  fi

  if [ -n "$ret_month" ];then
	ret_month=`echo $ret_month|sed s/^0//`
	ret_month="0"$ret_month
  else
	ret_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_name
	echo "[OK]    DELETE $ret_bck_file_name"
  else
    echo "[FAIL]  $ret_bck_file_name NOT EXIST!!"
  fi
  cd ~
  if [ -d $Dropbox_BK_DIR ];then
	cd $Dropbox_BK_DIR
	if [ -f $ret_bck_file_name ];then
		#rm -fr $ret_bck_file_name
		echo "[OK]    DELETE Dropbox BackFile->$ret_bck_file_name."
	else
		echo "[FAIL]  Dropbox BackFile->$ret_bck_file_name NOT EXIST."
	fi
  fi
}

auto_back_files true
auto_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 aux|grep 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里面可以看到

image

6.  总结

这个脚本完全是属于硬性的打包备份,备份文件还是放在空间里面,也可能说还是不安全,那么当然你可以在你的机子上来完成自动备份远程的主机文件,然后ftp下到本地来,这样就不用担心空间出现问题不能及时恢复了。这个实现也很简单的,你的机子执行自动运行备份,自动登陆ssh,一切都搞定,如果有需要的话,我可以分享出来。

但是考考虑到我们网速的问题,这个想法也就放弃了,但是我想到一个更好的办法,放到微软25G的skydrive上去,但是它不提供相应的api的呀,只是有一个非官方的.netapi,要是有更简单的jsapi就好了,如果大家有什么好的点子欢迎讨论。

现在受到月光博客一篇文章的启发,我把备份放到了dropbox上,呵呵,也算是实现了云存储吧。随便提下国外的主机上传到dropbox速度就是快的呀,我打包文件60M基本上就是一分钟左右,就搞定了,羡慕这样的网速。

无觅相关文章插件,快速提升流量

Leave a comment

9 Comments.

  1. @anyLiv
    呵呵,谢谢支持,下一步准备把数据库的备份也增加进去,觉得好用,就拿去用,嘿嘿。

  2. 灰常好!感谢分享!!

  3. @奶牛
    这个脚本只是实现了一个原始的打包自动备份删除的功能,东西还是放在了空间上了,省去了手动备份的吧。
    看自己的习惯了。
    你的ubutun文章写的不错,前几天编译ubutun的内核,始终是没有加载成功,编译高于自身内核的版本的可以起来,但是低于现在内核的切总是起不来,报了一大堆的错,你之前遇到过没有呢? :smile:

  4. wp备份奶牛感觉还是手工方便一些~~~ :|

  5. 不错不错,我一般都是手动的


发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Bad Behavior has blocked 1474 access attempts in the last 7 days.

site tracking with Asynchronous Google Analytics plugin for Multisite by WordPress Expert at Web Design Jakarta.

serial corel draw 11

serial corel draw 11 serials

free corel photoshop download

free corel photoshop download keygen

adobe free

adobe free

key office 2010

office 2010 key

download photo shop free

photo shop serial

free winrar download for xp

download winrar for xp for free

windows 7 free

windows 7 crack

cs5 serialz

cs5 serialz free

free corel downloads

free corel downloads cracked

office 2010 free

office 2010 key

winrar password cracker serial

wirar password cracker

serial winzip 11

serial winzip 11 key

photoshop key

photoshop key

windows key

windows key

corel dvd moviefactory 6

corel dvd moviefactory 6 downloads

office 2010 professional key

office 2010 key

photo shop key

photo shop key

winrar 3 download

winrar 3 download freedownload

windows 7 key

windows 7 key