Backup your Drupal sites with Drush and Git

AttachmentSize
dump.txt3.77 KB

Git is great for code development! But it can also be used for backing up your sites! Here is how I do it. I wrote a script leveraging Drush to dump the database(s) of your sites and then commit all these changes to a git repository.

cd /var/sites/multi6/

drupal/sites/default
drupal/sites/example1.org
drupal/sites/example2.com

database/default.sql
database/example1.org.sql
database/example2.com.sql

.git/

Here is the script:

<?php
#!/bin/bash

# This script backups the databases of all the sites found in the
# Drupal sites folder as well as the Drupal code base and sites files.

DRUSH='/Users/scor/.drush/drush/drush.php'

# Absolute path to the backup directory
BACKUP='/Users/scor/drupal_sites/multi6'
# Absolute path to the root folder of the Drupal code base.
DRUPAL_ROOT='/Users/scor/htdocs/d6ei'


for site in $( ls "$DRUPAL_ROOT/sites" )
do
 
site_path="$DRUPAL_ROOT/sites/$site"

 
# Selects directories which contain settings.php (excluding symbolic links)
 
if [ -d $site_path -a -f "$site_path/settings.php"  -a ! -L $site_path ]; then
   
echo "Dumping database for $site"
   
$DRUSH -r $site_path sql dump --ordered-dump --structure-tables-key=structure-tables > "$BACKUP/database/$site.sql"
   
echo "Done"
 
fi
done

# ensure all the files (even the new ones) get added to the git repository
cd $BACKUP
git add database
/production.sql
git add drupal
/

# commit every change
git commit -am "auto-commit changes database and files"
?>

Add new comment