#!/bin/bash
#
# (c) 2004-2007 Instituto Superior Técnico
#
# License: GPL-2
#

# Make backups of slapd data.

# CIIST - José Calhariz 2004/10/19


# Description: Stop slapd daemon for safe reasons, make a backup of
# /var/lib/ldap files in /var/backups/var_lib_ldap-%y%m%d-%H%M and an
# slapcat for /var/backups/ldap_ldif-%Y%m%d-%H%M.  But if it finds an
# /root/lb dir use it instead of /var/backups, because of compability
# with redhat in twins.



# NOTE: Please run before backups start

# BDB backups disabled

LIBDIR=/usr/share/cal-scripts
source ${LIBDIR}/slapdenv

function verbosemsg () {
    case $VERBOSE in 
	yes | YES)
	    echo $*
	    ;;
	*)
    esac
}


VERBOSE=YES

if [ "A$1" == "A-q" ] ; then
    VERBOSE=NO
fi

if [ "`eval slapd_started`" != YES ] ; then
    echo "WARNING ... slapd was not started, backing out"
    exit 1
fi

if [ -x /etc/init.d/slapd ] ; then
    /etc/init.d/slapd stop > /dev/null
else 
    if [ -x /etc/init.d/sdir ] ; then
	/etc/init.d/sdir stop > /dev/null
    fi
fi
verbosemsg "slapd down"

if [ -d /root/lb ] ; then
    BAKDIR=/root/lb
else
    BAKDIR=/var/backups/ldap
fi
DATE=`date +%Y%m%d-%H%M`
mkdir --mode=700 --parents $BAKDIR/ldap_ldif-$DATE
#mkdir --mode=700 --parents $BAKDIR/var_lib_ldap-$DATE 
pushd /var/lib/slapd >/dev/null
# db4.2_archive -a > logs_files_to_remove_after
#/bin/tar cf $BAKDIR/var_lib_ldap-$DATE/ldap-$DATE.db.tar .
# rm log_files_to_remove_after
popd > /dev/null
/usr/sbin/slapcat  > $BAKDIR/ldap_ldif-$DATE/ldap-$DATE.ldif
verbosemsg "backup done"

if [ -x /etc/init.d/slapd ] ; then
    /etc/init.d/slapd start > /dev/null
else 
    if [ -x /etc/init.d/sdir ] ; then
	/etc/init.d/sdir start > /dev/null
    fi
fi
verbosemsg "slapd up"

#nice gzip  -q9 $BAKDIR/var_lib_ldap-$DATE/ldap-$DATE.db.tar 
nice bzip2 -q9 $BAKDIR/ldap_ldif-$DATE/ldap-$DATE.ldif
verbosemsg "compression done"
#chmod -R 700 $BAKDIR/var_lib_ldap-$DATE 
chmod -R 700 $BAKDIR/ldap_ldif-$DATE
