I am LAZY bones? AN ancient AND boring SITE

2009年 12月 15日 的归档

简单的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系统。