Fullsitebackup
While looking for a quick and reliable way to get complete working backups, I stumbled over these shell scripts. They were originally designed for Drupal, but can easily be adapted for use with MediaWiki.
Fullsitebackup creates a complete backup of the files of a MediaWiki installation and of it's database. Fullsiterestore restores both. Also, the scripts can be used to migrate a MediaWiki installation from one to another host.
Please note that these scripts have some limitations, have some security risks, and are not tested thoroughly.
To do: Testing; handling of charsets; handling of innodb tables and lots more.
License: The original scripts are part of the Drupal handbook; the pages were written by different contributors and can be used in accordance with the Creative Commons Attribution-ShareAlike 2.0 License.
#!/bin/bash # # fullsitebackup.sh V1.2 # # Full backup of website files and database content. # # A number of variables defining file location and database connection # information must be set before this script will run. # Files are tar'ed from the root directory of the website. All files are # saved. The MySQL database tables are dumped without a database name and # and with the option to drop and recreate the tables. # # ---------------------- # 05-Jul-2007 - Quick adaptation for MediaWiki (currently testing) # ---------------------- # March 2007 Updates - Version for Drupal # - Updated script to resolve minor path bug # - Added mysql password variable (caution - this script file is now a security risk - protect it) # - Generates temp log file # - Updated backup and restore scripts have been tested on Ubunutu Edgy server w/Drupal 5.1 # # - Enjoy! BristolGuy #----------------------- # ## Parameters: # tar_file_name (optional) # # # Configuration # # Database connection information dbname="wikidb" # (e.g.: dbname=wikidb) dbhost="localhost" dbuser="" # (e.g.: dbuser=wikiuser) dbpw="" # (e.g.: dbuser password) # Website Files webrootdir="/var/www/w" # (e.g.: webrootdir=/home/user/public_html) # # Variables # # Default TAR Output File Base Name tarnamebase=sitebackup- datestamp=`date +'%m-%d-%Y'` # Execution directory (script start point) startdir=`pwd` logfile=$startdir"/fullsite.log" # file path and name of log file to use # Temporary Directory tempdir=$datestamp # # Input Parameter Check # if test "$1" = "" then tarname=$tarnamebase$datestamp.tgz else tarname=$1 fi # # Begin logging # echo "Beginning mediawiki site backup using fullsitebackup.sh ..." > $logfile # # Create temporary working directory # echo " Creating temp working dir ..." >> $logfile mkdir $tempdir # # TAR website files # echo " TARing website files into $webrootdir ..." >> $logfile cd $webrootdir tar cf $startdir/$tempdir/filecontent.tar . # # sqldump database information # echo " Dumping mediawiki database, using ..." >> $logfile echo " user:$dbuser; database:$dbname host:$dbhost " >> $logfile cd $startdir/$tempdir mysqldump --user=$dbuser --password=$dbpw --add-drop-table $dbname > dbcontent.sql # # Create final backup file # echo " Creating final compressed (tgz) TAR file: $tarname ..." >> $logfile tar czf $startdir/$tarname filecontent.tar dbcontent.sql # # Cleanup # echo " Removing temp dir $tempdir ..." >> $logfile cd $startdir rm -r $tempdir # # Exit banner # endtime=`date` echo "Backup completed $endtime, TAR file at $tarname. " >> $logfile