#!/bin/sh

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$HOME/bin;

#mysql databases
#/home/*
#/usr/www
#/usr/svn
#/usr/trac
#/etc/rc.conf
#/usr/local/etc/apache22/httpd.conf
#/usr/local/etc/apache22/Includes/*
#/etc/motd

DATE=`date "+%Y-%m-%d-%H%M%S"`;

host=`hostname | cut -d'.' -f1`;

backupbase="/backup/$host";
backuplatest="$backupbase/Latest";
backuppath="$backupbase/$DATE";
mysqlbackupdir="/usr/mysql/dump";
mysqlpassword="mysqlpassword";

echo "-----------------------------------------------";
echo "Running backup script ($DATE)" 
echo "-----------------------------------------------";

# Mount Backup-Drive
#echo "Mounting backup drive..."
#mount /dev/ad4s1a /backup

echo "Backing up databases...";
rm -rf $mysqlbackupdir;
mkdir -p $mysqlbackupdir;
for database in `mysql -uroot -p${mysqlpassword} --execute="SHOW Databases" --skip-column-names mysql | cut -d\| -f 1`; do
	if [ "$database" = "test" -o "$database" = "mysql" -o "$database" = "information_schema" ]; then
	else
		echo -e "\tBacking up $database database...";
		mysqldump -uroot -pmy5q1 --opt $database > "/tmp/$database.sql"
		tar -czf "$mysqlbackupdir/$database.sql.tar.gz" -C "/tmp/" "$database.sql"
		rm -f "/tmp/$database-$DATE.sql"
	fi
done

for dir in $*; do
	
	# Check to see if its a directory
	if [ -d "$dir" ]; then
		if [ `echo $dir | cut -c1` != '/' ]; then
			echo "$dir not an absolute path. Skipping." 1>&2
			continue;
		fi
		
		backupdir=$backuppath$dir;
		if [ `echo $backupdir | rev | cut -c1` != '/' ]; then
			backupdir="$backupdir/";
		fi

		echo "Creating backup directories for $dir"
		mkdir -p $backupdir;
		if [ -d "$backuplatest" ]; then
			mkdir -p $backuplatest$dir;
			echo -e "\tCreating snapshot off $backuplatest$dir to $backupdir"
			cd $backuplatest$dir && find . -print | cpio -dplm $backupdir;
		fi
		echo -e "\tUpdating $backupdir..."
		rsync -a --update --delete $dir $backuppath;
	else
		echo "$dir is not a directory. Skipping." 1>&2
	fi
done
$
ln -shf $backuppath $backuplatest; 

echo "Unmounting backup drive..."
#Unmount Backup-Drive
#cd /
#umount /backup
#echo "Done."

