#!/bin/bash -e

bkptype="$1"
if [ "$bkptype" != "diff" -a "$bkptype" != "full" ]; then
	echo "must give a backup type (full or diff)"
	exit 1
fi

basename="$2"
if [ -z "$basename" ]; then
	echo "no basename given"
	exit 1
fi

path="$3"
if [ ! -d "$path" ]; then
	echo "backup path $path not found"
	exit 1
fi

bkpdir="/backups"
if [ ! -d "$bkpdir" ]; then
	echo "rootdir $bkpdir not found"
	exit 1
fi

rootdir="$bkpdir/`hostname --fqdn`"
mkdir -p "$rootdir"

fullvol="$basename-full-`date +%Y-%m`"
diffvol="$basename-diff-`date -I`"
dbname="$basename.dmd"

fullvolpath="$rootdir/$fullvol"
diffvolpath="$rootdir/$diffvol"
dbpath="$rootdir/$dbname"

[ -f "$dbpath" ] || dar_manager -C "$dbpath"

case "$bkptype" in
	full)
		dar -Q -c "$fullvolpath" -z -R "$path"
		dar_manager -B "$dbpath" -A "$fullvolpath"
		;;
	diff)
		if [ -f "$fullvolpath.1.dar" ]; then
			dar -Q -c "$diffvolpath" -A "$fullvolpath" -z -R "$path"
			dar_manager -B "$dbpath" -A "$diffvolpath"
		else
			echo "fallback to full backup as none was found"
			dar -Q -c "$fullvolpath" -z -R "$path"
			dar_manager -B "$dbpath" -A "$fullvolpath"
		fi
		;;
	*)
		echo "w00t: must give a backup type (full or diff)"
		exit 1
esac
