Simple MediaWiki Backup: Difference between revisions

From WPLUG
Jump to navigation Jump to search
m (1 revision(s))
m (1 revision(s))
(No difference)

Revision as of 19:54, 13 April 2008


MediaWiki is one of my favorite pieces of software. Not because its code is elegant (LocalSettings.php? bleh), or because it has such a succinct but useful set of features (skins!). No, the thing about MediaWiki is that it does a great job of being a wiki.

I'm sure there has to be a better piece of wiki software out there, but I've not yet found it.

So, in the interest helping out other MediaWiki aficionados, here are three scripts which I use when I'm doing upgrades. This is only half the battle (the backing up half.)


Backup Scripts

Notes

  • These scripts are designed for use with mysql as the backend to the wiki. Other databases require the scripts to be adapted appropriately.
  • There are redundancies in running backupAll.bash. (hint: the databases). Why? Because when I run backupAll.bash, I want to backup everything. I want to backup the mysql server. I want to backup the wiki. There could be other things in backupAll.bash, but the listing here only includes the wiki related stuff. But, each backup should be atomic. So, backupWiki.bash should backup the wiki and its dependents. backupDB.bash should backup the database. I don't worry that in there the database is getting backed up (or dumped, more precisely) twice. Better twice than not at all.
  • So, in regards to the above bullet point, you can run backupWiki.bash by itself and have your wiki backed up.
  • Why backup? Because with a backup in hand, you can safely upgrade your wiki to the latest version, which means you install cool extensions.

backupAll.bash

#!/bin/bash

export scriptDir=/root

if [ -z $1 ]
then
 echo "Invalid backup label."
 exit 1;
fi

echo "Backing DB up to label $1"
echo "_________________________"
$scriptDir/backupDB.bash $1
echo ""
echo ""



echo "Backing Wiki up to label $1"
echo "_________________________"
$scriptDir/backupWiki.bash $1
echo ""
echo ""


backupDB.bash

#!/bin/bash


if [ -z $1 ]
then
 echo "Invalid backup label."
 exit 1;
fi


export dbUser=root
export password=supersecret
export mysqlSQL=mysql.$1.sql
export wikidbSQL=wikidb.$1.sql
export mysqlBZ2=$mysqlSQL.bz2
export wikidbBZ2=$wikidbSQL.bz2



echo "Creating dump of mysql..."
mysqldump -u $dbUser --password=$password mysql > $mysqlSQL

echo "Creating dump of wikidb..."
mysqldump -u $dbUser --password=$password wikidb > $wikidbSQL



if [ -f $mysqlBZ2 ]
then
 echo "Removing old backups of $mysqlBZ2..."
 rm -r $mysqlBZ2
fi

if [ -f $wikidbBZ2 ]
then
 echo "Removing old backups of $wikidbBZ2..."
 rm -r $wikidbBZ2
fi


echo "Zipping up $mysqlBZ2..."
bzip2 $mysqlSQL
echo "Zipping up $wikidbBZ2..."
bzip2 $wikidbSQL

backupWiki.bash

#!/bin/bash

if [ -z $1 ]
then
 echo "Invalid backup label."
 exit 1;
fi

export destFile=wikiBackup.$1.tar.bz2
export temp=/tmp
export backupWiki=backupWiki
export tempDir=$temp/backupWiki
export srv=/srv
export mediaWiki=mediawiki
export mediaWikiPath=$srv/$mediaWiki
export wikiDB=wikidbB
export password=supersecret


# Remove the temporary directory if it exists.

if [ -d $tempDir ] 
then
 echo "Removing temporary directory $tempDir..."
 rm -rf $tempDir
fi


# If the backup file exists, delete it.

if [ -f $destFile ] 
then
 echo "Removing old backup file $destFile..."
 rm $destFile
fi


# Create the temporary directory.

echo "Creating temporary directory $tempDir..."
mkdir $tempDir


# Get the database dumps.

echo "Creating database dumps..."
mysqldump -u root --password=$password mysql > $tempDir/mysql.sql
mysqldump -u root --password=$password $wikiDB > $tempDir/wikidb.sql


# Get the important files from mediawiki.

echo "Creating backups of settings php files and vhost..."
cp /etc/apache2/vhosts.d/wiki.conf $tempDir
cp $mediaWikiPath/LocalSettings.php $tempDir
cp $mediaWikiPath/AdminSettings.php $tempDir


# Backup the mediawiki directory.

echo "Backing up mediawiki directory..."
tar --create --bzip2 --directory=$srv --file=$tempDir/mediawiki.tar.bz2 $mediaWiki 


# Create the master backup.

echo "Creating master backup $destFile from $tempDir..."
tar --create --bzip2 --directory=$temp --file=$destFile $backupWiki 


# Remove the temporary directory if it exists.

if [ -d $tempDir ]
then
 echo "Removing temporary directory $tempDir..."
 rm -rf $tempDir
fi


What a backup entails...

yoda:~ # ./backupAll.bash test
Backing DB up to label test
_________________________
Creating dump of mysql...
Creating dump of wikidb...
Removing old backups of mysql.test.sql.bz2...
Removing old backups of wikidb.test.sql.bz2...
Zipping up mysql.test.sql.bz2...
Zipping up wikidb.test.sql.bz2...
  

Backing Wiki up to label test
_________________________
Removing temporary directory /tmp/backupWiki...
Creating temporary directory /tmp/backupWiki...
Creating database dumps...
Creating backups of settings php files and vhost...
Backing up mediawiki directory...
Creating master backup wikiBackup.test.tar.bz2 from /tmp/backupWiki...
Removing temporary directory /tmp/backupWiki...

This category contains the pages of wiki users. To make sure yours appears here, put

{{Homepage}}

as the last line of your user page.