Skip to content

Instantly share code, notes, and snippets.

@jrh-spg
Last active January 9, 2016 19:18
Show Gist options
  • Save jrh-spg/8086374 to your computer and use it in GitHub Desktop.
Save jrh-spg/8086374 to your computer and use it in GitHub Desktop.
Backup script to backup my document root and MySQL databases to a remote backup server.
#!/bin/bash
LOCKFILE=/tmp/.wb.lck
HOST=web01.fisys.us
BACKUPHOST=25.23.239.150
DOCROOT=/var/www
EXCLUDEDB='schema\|mysql'
EXCLUDE=.git
DATE=`date +%Y-%m-%d.%H%M`
BACKUPDIR=/mnt/backup
BACKUPFILE=$BACKUPDIR/$HOST.backup-$DATE.tar.bz2
#exec 2> >(logger -p 3 -t "Backup_Daemon") 1> >(logger -p 6 -t "Backup_Daemon")
if [ -f $LOCKFILE ];
then
echo "Lockfile exists... Quitting." & exit 0
else
echo "Starting Web Server backup at `date`."
# Create lockfile
/bin/touch $LOCKFILE
# Create DB backups
echo "Starting database backup."
if [ ! -d $DOCROOT/MYSQL ]; then mkdir $DOCROOT/MYSQL; fi
for i in $(mysql -r -N -s -e "show databases;"|grep -v $EXCLUDEDB);do mysqldump $i > $DOCROOT/MYSQL/$i.sql;done && echo "Database backups complete"
# Backup docroot
echo "Backing up $DOCROOT to ssh://$BACKUPHOST:$BACKUPFILE"
tar cjfP - $DOCROOT --exclude='$EXCLUDE'| ssh root@$BACKUPHOST "cat > $BACKUPFILE"
echo "Backup of $DOCROOT and all MySQL databases saved as $BACKUPFILE"
echo "Filesize: `ssh root@$BACKUPHOST 'du -sh $BACKUPFILE|awk '{print $1}''`"
# Remove lockfile
echo "Removing lockfile"
rm $LOCKFILE
echo "Backup complete at `date`."
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment