Backup OpenLDAP com o Bacula 1

Se você tem apenas uma configuração mais simples, utilizando apenas um backend, o comando slapcat irá produzir um dump completo para backup:

slapcat | gzip > backup.ldif

Para cenários mais elaborados (com múltiplos backends), o slapcat precisará do DN (distinguish name) de cada um dos backends locais.
Este script fará todo o trabalho:

#!/bin/bash

SLAPD_CONF=/etc/ldap/slapd.conf

# where to put files
BACKUP_PATH="/usr/local/backup/ldap_dumps"

# set more secure umask
umask 0027

if [ ! -r "${SLAPD_CONF}" ]; then
echo "Error: "${SLAPD_CONF}" cannot be read." >&2
exit 1
fi

dumpSuffix() {
suffix=${1//"/}
number=$2
echo -n " - ${suffix}"
slapcat -b "${suffix}" | bzip2 > ${BACKUP_PATH}/dump.db${number}.ldif.bz2
echo "."
}

echo "searching for suffixes to dump"
# open slapd conf file and read line by line
dbNum=0
exec 3<${SLAPD_CONF}
while read line <&3; do # search for database declaration if echo $line | grep -e '^database' > /dev/null; then
(( dbNum++ ))
database=`echo $line | awk '{print $2}'`
# lets see if it's a bdb/hdb database (I don't care about anything else...)
if [ "$database" == "bdb" ] || [ "$database" == "hdb"]; then

# searching for suffix now
while [ -z $suffix ]; do
if read line <&3; then if echo $line | grep -e '^suffix' > /dev/null; then
# found suffix, now we can dump it somewhere
suffix=`echo $line | awk '{print $2}'`
dumpSuffix $suffix $dbNum
fi
fi
done
suffix=""
fi
fi
done
exec 3>&- # close file descriptor

exit 0

Fonte: http://wiki.bacula.org/doku.php?id=application_specific_backups:openldap

Disponível em: pt-brPortuguês

Deixe uma resposta