#!/bin/sh
# Shell script to backup (and optionally upgrade) a wordpress installation
# Version: 0.5
# Author: Mauro Lacy (mauro@lacy.com.ar)
# License: GPL

OP="$1"

[ "$OP" = "-h" -o "$OP" = "--help" ] && echo "Usage: $0 [-h]|[-u]" && echo "-h: this cruft." && echo "-u: upgrade also to latest WP version." && exit 1

# upgrade?
[ "$OP" = "-u" ] && U=1

# WP install dir. Must end with "/wordpress"
WP=/usr/share/wordpress

# Database name
DB=wordpress

DBUSER="root"
# I don't like putting password into shell scripts
DBPASS=""

# Base url
BASE=wordpress

# are we using debian style files?
DEBIAN=1 

# set your site here if you're not using debian style files
# eg. SITE="example.com"
SITE="<your-site>"


if [ $DEBIAN -eq 1 ]
then # look for base site
SITES=/etc/wordpress/config-*.php
for S in $SITES
do
	[ -f $S -a ! -h $S ] && SITE=`echo $S |sed 's/.*config-//;s/.php//'` && break
done 
# rewrite
REWRITE=`grep RewriteBase /etc/wordpress/htaccess | awk '{print $2}' | sed 's/\///g'`
[ ! -z "$REWRITE" ] && BASE="$REWRITE"
fi

DATE=`date +%Y%m%d`
VERSION=`sed -n '/Versi.n /s/.*Versi.n //p' $WP/readme.html`
VERSION=`sed -n "/wp_version/{s/[^']*'//;s/'.*//p}" $WP/wp-includes/version.php`
echo "Wordpress version: $VERSION"

LATEST="http://wordpress.org/latest.tar.gz"
F=`basename $LATEST`

# site backup
echo -n "Site backup... "
tar jcf wordpress-$VERSION-site-backup-$DATE.tar.bz2 $WP 2>/dev/null && echo "done." || echo "failed!"

# db backup
echo "Db backup... Db user: $DBUSER"
mysqldump --add-drop-table -hlocalhost -u$DBUSER -p$DBPASS $DB | bzip2 -c >wordpress-$VERSION-db-backup-$DATE.bz2 && echo "done." || echo "failed!"

# only backup?
[ -z "$U" ] && exit 0

rm -f $F
echo -n "Getting latest version... "
wget "$LATEST" 2>/dev/null && echo "done." || echo "failed!"

echo -n "Deleting files... "
rm -rf $WP/wp-admin
rm -rf $WP/wp-includes
echo "done."

echo -n "Installing... "
tar zxf $F -C $WP/.. && echo "done." || echo "failed!"

echo
echo "Now, go to http://$SITE/$BASE/wp-admin/upgrade.php"

