#!/bin/sh

set -e
set -u

DATADIR=${DATADIR:-/opt/osstech/var/lib/samba}
CONFDIR=${CONFDIR:-/opt/osstech/etc/samba}
WHERE=${WHERE:-/opt/osstech/var/lib/samba.backup}

# Set default retention period.
DAYS=${DAYS:-90}
# ISO 8601 standard date.
WHEN=`date +%Y-%m-%d`

# tdbbackup command path
tdbbackup=/opt/osstech/bin/tdbbackup

# Backup data directory
rm -rf ${WHERE}/data
cd ${DATADIR}
find . -name "*.[tl]db.bak" -exec rm '{}' \;
find . -name "*.[tl]db" -exec $tdbbackup '{}' \;
cp -r ${DATADIR} ${WHERE}/data
cd ${WHERE}/data
for db in `find . -name "*.[tl]db.bak"`; do  # override db file
    src=$db
    dst=`echo -n $db | sed -e 's/\.bak$//'`
    mv $src $dst
done
cd ${WHERE}
# --warning=no-file-ignored set to suppress "socket ignored" messages.
tar czf ${WHERE}/data.${WHEN}.tar.gz data --warning=no-file-ignored
rm -rf ${WHERE}/data
cd ${DATADIR}
find . -name "*.[tl]db.bak" -exec rm '{}' \;

# Backup conf directory
rm -rf ${WHERE}/conf
cp -r ${CONFDIR} ${WHERE}/conf
cd ${WHERE}
# --warning=no-file-ignored set to suppress "socket ignored" messages.
tar czf ${WHERE}/conf.${WHEN}.tar.gz conf --warning=no-file-ignored
rm -rf ${WHERE}/conf

# Delete files which exceeds retention period
cd $WHERE
find . \( -name "conf.*.tar.gz" -o -name "data.*.tar.gz" \) -a -mtime +$DAYS \
    -exec rm '{}' \;
