I am LAZY bones? AN ancient AND boring SITE

简单的WP备份脚本

现在,写blog的人是越来越多了;这部分人里,自己建站的也越来越多了;又在这部分人里,用WP来建的也越来越多了。
而建过站的人,都知道备份的重要性。但是手工备份又显然太麻烦了,所以我写了这个脚本来自动备份,放cron里以后,基本上就不用去关心什么了,哈哈,不过在加crontab的时候,要注意用户,如果是用root跑,可能会因为读不到当前用户的key而备份失败哦。
条件是你的空间支持ssh登录,并且事先做好了rsa公钥,登录的时候不需要输入密码。
此脚本会生成两个文件,一个是文件的打包,一个是数据库的打包。上脚本吧:

#!/bin/sh
#WP备份脚本
#方便地备份wordpress的文件及数据库(限mysql)
#作者: bones7456
 
#需要事先设置好这个HOST的rsa key 不然无法用ssh登录
HOST="gnometwe@li2z.cn"
#远程的WP文件所在目录,此目录下要有 wp-config.php
REMOTE_PATH="www/li2z"
#本地保存目录(最好是绝对路径),留空为当前目录
LOCAL_PATH="/home/lily/li2z.backup"
#备份文件的前缀,默认自动按时间生成
PRE=`date +%F-%H-%M-%S`
 
[ -z $LOCAL_PATH ] || cd $LOCAL_PATH
#先备份文件
ssh $HOST "cd $REMOTE_PATH; tar cf - -X exclude ." | gzip > $PRE.tar.gz
#从文件取得数据库信息
tar zxvf $PRE.tar.gz ./wp-config.php
if [ -f wp-config.php ];then
    DB_NAME=`grep "^define('DB_NAME'" wp-config.php | cut -d\' -f 4`
    DB_USER=`grep "^define('DB_USER'" wp-config.php | cut -d\' -f 4`
    DB_PASSWORD=`grep "^define('DB_PASSWORD'" wp-config.php | cut -d\' -f 4`
    rm wp-config.php
else
    echo "Something wrong ..."
    exit 1
fi
#再备份数据库
ssh $HOST mysqldump -u${DB_USER} -p${DB_PASSWORD} $DB_NAME | gzip > $PRE.sql.gz
#这个可选,删除15天前的备份文件
#要打开的话,记得建个专门的目录存放备份,以免误删其他文件
#find . -maxdepth 1 -name "*.gz" -mtime +15 -exec rm {} \;

PS: 稍作修改应该也可以用于非WP的blog系统。

最后修改时间: 2009年12月17日 12:06

本文章发表于: 2009年12月15日 13:26 | 所属分类:经验技巧. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

12 个评论 关于: “简单的WP备份脚本”

  1. Tweets that mention I am LAZY bones ? : 简单的WP备份脚本 -- Topsy.com 在 2009年12月15日 13:28 说:回复

    […] This post was mentioned on Twitter by 骨头, 想入非非. 想入非非 said: RT @bones7456: li2z新文章: 简单的WP备份脚本 (http://cli.gs/3u7Bz) […]

  2. muxi 在 2009年12月15日 13:44 说:回复

    阁下把输出的RSS修理一下吧,总是没有任何格式,乱糟糟的,看不清楚啊

    BTW:能输出全文么?

  3. DingWL 在 2009年12月15日 14:20 说:回复

    哦哦哦哦哦哦哦,很少用blog的飘过……

  4. evlos 在 2009年12月15日 22:45 说:回复

    呵呵 学习一下 ~ ssh 是好东西 ~

  5. shellex 在 2009年12月17日 13:10 说:回复

    太好了~~~谢谢骨头酱

    • bones7456 在 2009年12月17日 20:45 说:回复

      呵呵,壳壳正好用上了~

  6. 今天能看见山 在 2009年12月22日 12:22 说:回复

    恰巧前两天我也弄了这么一个脚本,跟你的不同之处是我那个脚本是运行在WP服务器上,定时向我的路由器(运行DDWRT–一种linux系统)里面备份。可以参考一下:
    http://www.faquir.net/archives/327
    另外,文件其实也可以实现增量备份,可以用rsync。因为我的站数据比较少,全部备份成本也不高,所以最近也就还没太研究那东西怎么用。

    • bones7456 在 2009年12月22日 20:18 说:回复

      呵呵,握手~
      你的路由器是什么型号?有多少可用的空间呢?

      • 今天能看见山 在 2009年12月22日 23:28 说:回复

        刚才发了一个带复杂链接的上不来,估计被作为垃圾评论拦截了。
        我那个路由器是WRT300N,你可以去查一下。带USB接口,我接了个16G的U盘,24小时给我下载呢。
        更多ddwrt的资料和路由器,你可以去恩山论坛那看看。地址我就不写了,你上网搜一下就有了。

        • bones7456 在 2009年12月23日 08:32 说:回复

          呵呵,看上去真不错啊~ 以后有机会我也折腾这个去~

  7. 今天能看见山 在 2009年12月22日 23:24 说:回复

    路由器是在恩山那买的裸板,带USB接口的,自己装了个16G的U盘。我的是这款:
    http://item.taobao.com/auction/item_detail-0db1-e0efa3494167e669a5c6f965750af3c0.htm
    你可以上论坛看看去,www.right.com.cn

    之前还用过一款不到200的,也是裸板,就是性能差点,但是有USB接口,装个U盘下载一点问题也没有。

发表评论