I built a internal Mediawiki site for my company. A easy place to combine useful information. I recently came up with a backup script that I find rather useful and since I’m a nice guy I decided to share it, ok ok I have an alter motive I admit it! I’m a believer in open source, the more people editing the software the better it gets, so by all means, if you notice something about this script and you think “what an idiot he could have just done it this way and it would have been eaiser / more efficent. by all means let me know! =) thanks!
#!/bin/sh
#--------------------------------------------
# CHANGE THESE OPTIONS TO MATCH YOUR SYSTEM !
wikiname=insight # wiki name (used for backup filenames)
wikidb="wikidb" # the database your wiki stores data in
wikidir=/var/www/ # the directory mediawiki is installed in
backupdir=~/bak # the directory to write the backup to
#---------------
# END OF OPTIONS
timestamp=`date +%Y-%m-%d`
db="$backupdir/$wikiname-$timestamp.sql.gz"
xml="$backupdir/$wikiname-$timestamp.xml.gz"
file="$backupdir/$wikiname-$timestamp.files.tgz"
#---------------------------------
# Put the wiki into Read-only mode
echo
echo "Putting the wiki in Read-only mode..."
echo "$wgReadOnly = 'Dumping Database, Access will be restored in ~ 1 min.';" >> "$wikidir"/LocalSettings.php
echo
echo "creating database dump, $db..."
mysqldump --default-character-set=latin1 --user=XXXX --password=XXXX "$wikidb" | gzip > "$db" || exit $?
echo
echo "creating XML dump, $xml..."
cd "$wikidir/maintenance"
php -d error_reporting=E_ERROR dumpBackup.php --full | gzip > "$xml" || exit $?
echo
echo "creating file archive, $file..."
cd "$wikidir"
tar --exclude .svn -zcf "$file" . || exit $?
#-----------------------------------------
# Put the wiki back into read/write mode
echo
echo "Bringing the wiki out of Read-only mode..."
head -n-1 "$wikidir"/LocalSettings.php > "$backupdir"/LocalSettings.bak
cat "$backupdir"/LocalSettings.bak > "$wikidir"/LocalSettings.php
rm "$backupdir"/LocalSettings.bak
#-----------------------
# Creating TAR archive
echo
echo "Creating TAR archive"
tar -cf $backupdir/$wikiname-$timestamp.tar $db $xml $file
rm $db $xml $file
echo
echo "Done!"
#----
# END