#!/bin/sh
# Webserver Backup Script
# By Chris Cooper - QCAdmin@gmail.com
# Revision: 2008.10.08

#Temporary File Storage
BACKUPDIR="/tmp/backupscript"
REPORT=$BACKUPDIR/backup.report
CLEANUP="rm -rf /tmp/backupscript/*.bz2

#Flat File Backup
DIRS="/var/www /etc"
#FILE="fs-full-$(date +"%Y-%m-%d").tar.bz2"
FILE="fs-full.tar.bz2"

#SQL Backup 
SQLSERVER="localhost"
SQLUSER="<SQL-USER>"
SQLPASS="<SQL-PASS>"
#SQLFILE=mysql-$db.$(date +"%Y-%m-%d").bz2
SQLFILE=mysql-$db.bz2

#SAMBA file server to dump files to
SMBPATH="\\\\<SERVER>\\<SHARE>"
#SMBCMD="cd <DIR>;lcd $BACKUPDIR;prompt;mput *"
SMBCMD="lcd $BACKUPDIR;prompt;mput *"
SMBUSER="<DOMAIN>/<USER>"
SMBPASS="<DOMAIN PASS>"

#Email report
EMAILID="user@domain.com"
SUBJ="Webserver Backup - $(date +"%Y-%m-%d")"

#Locate Executables
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BZIP2="$(which bzip2)"
SMBCLIENT="$(which smbclient)"

# Housekeeping
[ ! -d $BACKUPDIR ] && mkdir -p $BACKUPDIR || :

echo "Start Date: $(date)"> $REPORT
echo "Hostname: $(hostname)" >> $REPORT


echo "Backing up: $DIRS" >> $REPORT
tar -jcvf $BACKUPDIR/$FILE $DIRS

### Start MySQL Backup ###
# List DBs
DBS="$($MYSQL -u $SQLUSER -p$SQLPASS -Bse 'show databases')"

# Dump each DB
for db in $DBS
do
echo "Exporting DB: $db" >> $REPORT
$MYSQLDUMP -h $SQLSERVER -u $SQLUSER -p$SQLPASS $db | $BZIP2 -9 > $BACKUPDIR/$SQLFILE
done

ls -lh $BACKUPDIR >> $REPORT

### Dump backup using smbclient ###
$SMBCLIENT -U $SMBUSER $SMBPATH $SMBPASS -c "$SMBCMD" >> $REPORT

### Email Report
echo "Destination: $SMBPATH" >> $REPORT
echo "Finish Date: $(date)">> $REPORT
mail -s "$SUBJ" "$EMAILID" < $REPORT

$CLEANUP
exit 0
