#!/bin/bash

. /etc/bakdump.conf

function bak_mysqld {
    echo "Dumping MYSQL DB's..."
    "$MYSQLDUMP" --defaults-file="$MYSQLCONF" --all-databases | $COMPRESS > "$TARGET/mysql-$EXT"
}

function bak_slapd {
    echo "Dumping SLAPD..."
    "$SLAPCAT" | $COMPRESS > "$TARGET/slapd-$EXT"
}

function bak_postgres {
    echo "Dumping PostgreSQL DB's..."
    su postgres -c "'$PGDUMP' -c | $COMPRESS > '/var/lib/postgresql/pgsql-$EXT'"
    mv -f "/var/lib/postgresql/pgsql-$EXT" "$TARGET/"
}

function bak_firebird {
    echo "Dumping Firebird2 DB's..."
    for f in /var/lib/firebird2/data/*.[fg]db; do
	bn=`basename "$f"`
	echo " $bn"
	"$GBAK" -b $f /dev/stdout | $COMPRESS > "$TARGET/firebird-$bn-$EXT"
    done
}

function bak_dpkg {
    echo "Dumping DPKG selection..."
    dpkg --get-selections | $COMPRESS > "$TARGET/dpkg-$EXT"
}

mkdir -p "$TARGET"
{
[ -x "$MYSQLDUMP" -a -r "$MYSQLCONF" ] && bak_mysqld
[ -x "$SLAPCAT" ] && bak_slapd
[ -x "$PGDUMP" ] && bak_postgres
[ -x "$GBAK" ] && bak_firebird
[ -x "$DPKG" ] && bak_dpkg
} >& "$TMPF"

# only output if something had changed
if [ ! -e "$LASTOUT" ]; then
    cat "$TMPF"
else
    diff "$TMPF" "$LASTOUT" >& /dev/null
    if [ "$?" != "0" ]; then
	cat "$TMPF"
	echo
	df -h "$TARGET"
    fi
fi

mv -f "$TMPF" "$LASTOUT"
