分享我的网站(wordpress)数据备份脚本

    前两天突然看到一篇文章讲两个Wordpress备份插件。我想实现异地备份功能,而这其中最好的插件貌似也只能把备份数据通过mail形式发到邮箱里。这对于小数据量的备份还可以,但是如果上传目录里的图多了根本就行不通。于是想到我是可以通过shell访问我的站点空间的,那完全可能通过文件传输协议把备份放到其他地方去。

    首先研究的是能不能通过dropbox,写个脚本直接备份文件进dropbox。我参考了《Install Dropbox In An Entirely Text Based Linux Environment》但是没有成功,原因是dreamhost支持的gclib是2.1版本的,而在纯字符操作环境的linux下安装dropbox需要glib2.4:

image

如果空间可以符合要求的话,可以试试这个方案,我个人觉得应该是最好的方案了。联系了dreamhost的客服,说我得自己来编译跟安装glibc。有点麻烦,有时间了再玩这个吧。

    这条路不通,就只能考虑直接通过ftp把备份文件传到我的路由器上了。有个DDWRT就是方便,直接在管理页面上做了端口映射,把上面的FTP服务的21端口暴露在互联网上,这样就可以通过我的dreamhost访问了。不过这样的缺点就是安全性不好。

    然后用下面的脚本实现备份操作。总体来说,备份需要做的工作分成两部分,一是备份数据库,二是备份一些重要文件。

#!/bin/sh
#Define variables
now=`date +%Y%m%d`
sitename="faquir.net"
dbname="zq_blog"
dbhost="mysql.faquir.net"
dbuser="xxxxxx"
dbpass="xxxxxxxxxx"
ftphost=myhome.3322.org
ftpuser=ftpuser
ftppass=ftppassword

#Clean folders
rm -rf ~/backups/$sitename
mkdir ~/backups/$sitename

#Backup database
mysqldump –opt –user=$dbuser –password=$dbpass –host=$dbhost $dbname > ~/backups/$sitename/$dbname.sql

#Package SQL and uploads images
tar czvf ~/backups/$sitename/$sitename.$now.tar.gz ~/$sitename/wp-content/uploads ~/backups/$sitename/$dbname.sql
echo "created file:"$sitename.$now.tar.gz

#upload to router
ping -c 3 $ftphost
if [ "$?" -eq "0" ]
then
ftp -i -n $ftphost<<EOF

user $ftpuser $ftppassword
cd /data/backups/
lcd ~/backups/$sitename
bin
put $sitename.$now.tar.gz
close
bye
EOF
fi

echo "backup finished!!"

    版权没有,大家可以自行修改以适应你的需求。

    之后在dreamhost中设置crontable让这个脚本每天半夜的时候执行。完了就给我的指定邮箱里发邮件。于是每天早上我除了得到我的备份文件外,就可以得到这样一个邮件了:

/home/zhangqi/faquir.net/wp-content/uploads/
/home/zhangqi/faquir.net/wp-content/uploads/2009/
/home/zhangqi/faquir.net/wp-content/uploads/2009/12/
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia-150×150.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia1-150×150.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/.jpg-150×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/20-150×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia1.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/21-300×225.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/1-300×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia-291×300.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/21.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/.jpg-300×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/20.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/20-300×275.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/1-150×150.jpg
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia1-291×300.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/australia.gif
/home/zhangqi/faquir.net/wp-content/uploads/2009/11/21-150×150.jpg
/home/zhangqi/backups/faquir.net/faquir_net.sql
created file:abigbird.com.20091203.tar.gz
PING myhome.3322.org (124.64.122.70) 56(84) bytes of data.
64 bytes from 124.64.122.70: icmp_seq=1 ttl=49 time=247 ms
64 bytes from 124.64.122.70: icmp_seq=2 ttl=49 time=228 ms
64 bytes from 124.64.122.70: icmp_seq=3 ttl=49 time=246 ms

— myhome.3322.org ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2007ms
rtt min/avg/max/mdev = 228.394/240.844/247.589/8.832 ms
Local directory now /home/zhangqi/backups/faquir.net
backup finished!!

试验wordpress

今天心血来潮在我的dreamhost空间上装了一个wordpress,最主要的好处是可以绑定顶级域名了。还装了一个跟live space同步的插件,试验几天,如果OK,就考虑全面转入wordpress了。