71 lines
1.6 KiB
Bash
Executable File
71 lines
1.6 KiB
Bash
Executable File
#!/bin/sh
|
|
# Restore all ldap database from $1
|
|
# Prerequisite: all ldap database are in /var/lib/ldap
|
|
|
|
MAXDB=30
|
|
SERVICE="/usr/sbin/service slapd"
|
|
|
|
set -e
|
|
|
|
if [ $# -ne 1 ]; then
|
|
echo "ERR: syntaxe: restore <directory>"
|
|
exit 1
|
|
fi
|
|
|
|
BACKUPDIR=$1
|
|
shift
|
|
if [ ! -d "$BACKUPDIR" -o ! -f "$BACKUPDIR/config.ldif" ]; then
|
|
echo "Le premier argument doit être un répertoire contenant au moins un fichier config.ldif"
|
|
exit 2
|
|
fi
|
|
|
|
echo ""
|
|
echo " *************"
|
|
echo " * * La configuration et toutes les données"
|
|
echo " * ATTENTION * de l'annuaire LDAP vont être définitivement"
|
|
echo " * * effacées. Avez-vous fait un backup ?"
|
|
echo " *************"
|
|
|
|
echo ""
|
|
echo "Confirmez la MISE A ZÉRO COMPLÈTE avant restauration."
|
|
echo ""
|
|
echo -n "Tapez oui en toutes lettres : "
|
|
read ok
|
|
if [ "x$ok" != "xoui" ]; then
|
|
exit 3
|
|
fi
|
|
|
|
${SERVICE} stop
|
|
|
|
echo -n "Effacement des données actuelles .."
|
|
rm -rf /etc/ldap/slapd.d/*
|
|
find /var/lib/ldap -type f -delete
|
|
echo "ok"
|
|
|
|
echo ""
|
|
echo "Restauration du config.ldif .."
|
|
slapadd -n0 -F/etc/ldap/slapd.d/ -l"$BACKUPDIR/config.ldif"
|
|
|
|
echo ""
|
|
echo "Restauration des certificats SSL .."
|
|
mkdir -p /etc/ldap/ssl
|
|
cp $BACKUPDIR/slapd.pem $BACKUPDIR/slapd.key /etc/ldap/ssl
|
|
chown -R root:openldap /etc/ldap/ssl
|
|
chmod 0755 /etc/ldap/ssl
|
|
chmod 0644 /etc/ldap/ssl/slapd.pem
|
|
chmod 0640 /etc/ldap/ssl/slapd.key
|
|
echo "ok"
|
|
|
|
echo ""
|
|
for i in `seq 1 $MAXDB`; do
|
|
if [ -f "$BACKUPDIR/db-$i.ldif" ]; then
|
|
echo "Restauration de la base $i .."
|
|
slapadd -n$i -F/etc/ldap/slapd.d/ -l"$BACKUPDIR/db-$i.ldif"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
chown -R openldap:openldap /etc/ldap/slapd.d/ /var/lib/ldap/
|
|
|
|
${SERVICE} start
|