Restauration de l’annuaire
Lors d’une opération de restauration, il peut y avoir deux cas de figure :
	•	Restauration totale = l’application, la configuration et les données de l’annuaire. 
	•	Restauration partielle = seulement les données de l’annuaire.
1. Restauration totale
Ce cas de figure peut être envisagé lors d’un crash du serveur ou bien dans le cadre d’une réinstallation complète du système. Il faudra donc envisager tout d’abord de réinstaller l’application OpenLDAP sur le système puis de récupérer une sauvegarde de la configuration de l’annuaire pour enfin restaurer les données de l’annuaire.
Ensuite, il y aura deux méthodes pour effectuer la restauration de l’annuaire :
Première méthode
	•	Réinstallation de l’application OpenLDAP
	•	Restauration du répertoire /etc/openldap
	•	Restauration du répertoire /var/lib/ldap
Deuxième méthode
	•	Réinstallation de l’application OpenLDAP
	•	Restauration du répertoire /etc/openldap
	•	Si possibilité de récupérer le fichier journal du backend :
	▪	Restauration partielle du répertoire /var/lib/ldap.
	▪	Application du fichier journal pour récupérer les dernières transactions survenues juste avant le crash.
Les deux méthodes ont des temps de restauration identiques si ce n’est que la seconde méthode permettra de restaurer au mieux l’état de l’annuaire juste avant son crash.
	•	Pour la première méthode, il s’agit simplement d’opération de désarchivage des répertoires /var/lib/ldap et /etc/openldap.
	•	Pour la seconde méthode, il faudra réaliser les commandes suivantes :
1.	Restaurer tous les fichiers du backend depuis le média de sauvegarde vers le répertoire de la base de données de l’annuaire.	
cp /databackup/*db.00* /var/lib/ldap  
cp /databackup/*.bdb /var/lib/ldap
2.	Placer également les fichiers journaux qui ont pu être récupérés :	
cp /logbackup/log.0000000001 /var/lib/ldap
3.	Puis exécuter la commande suivante :	
db_recover -c -h /var/lib/ldap
4.	Redémarrer le service ldap.	
service slapd start
2. Restauration partielle
Pour la réalisation de ce type de sauvegarde, il y aura la méthode en ligne et la méthode hors-ligne.
a. Restauration en ligne de type "import/export"
Dans certaines circonstances il peut être nécessaire de devoir restaurer un annuaire sans arrêt de celui-ci par l’intermédiaire d’un fichier LDIF et de commandes d’administration LDAP telles que ldapadd et ldapmodify. Cette méthode est utilisée généralement non pas pour restaurer la totalité de l’annuaire, mais pour en restaurer une partie ou bien seulement quelques entrées. Dans ce dernier cas, il faudra isoler les entrées désirées de notre fichier de sauvegarde LDIF pour ensuite les charger à l’aide des commandes LDAP.
Par exemple, la commande ci-dessous va effacer l’entrée user2 :
[root@ldap01 tmp]# ldapdelete -h localhost -D 
"cn=root,dc=exemple,dc=com" -w secret 
uid=user2,ou=users,dc=exemple,dc=com 
 
ˆC 
[root@ldap01 tmp]#
Une fois l’effacement de l’entrée constatée, il faudra donc extraire seulement l’entrée du user2 (sans les attributs opérationnels) pour la (re)charger dans l’annuaire :
	•	Extraction de l’entrée rdn: uid=user2 avec effacement des attributs opérationnels en surbrillance.
### Contenu du fichier "user2.ldif" 
 
[root@ldap01 tmp]# cat user2.ldif 
dn: uid=user2,ou=users,dc=exemple,dc=com 
objectClass: account 
objectClass: top 
objectClass: posixAccount 
objectClass: shadowAccount 
loginShell: /bin/bash 
gidNumber: 60001 
uidNumber: 60011 
cn: user2 
homeDirectory: /home/user2 
uid: user2 
gecos: USER2/GGS_SUPPORT 
userPassword:: 
e3NzaGF9WTRGZ1ZSZW1lR0haTXFiY1JQWTluOG15dVB4T3lKeTFzeXJySXc9 
structuralObjectClass: account 
entryUUID: 99c68a58-c04d-1036-8d8a-85e8b73264c8 
creatorsName: cn=root,dc=exemple,dc=com 
createTimestamp: 20170428110014Z 
entryCSN: 20170428110014.231572Z#000000#000#000000 
modifiersName: cn=root,dc=exemple,dc=com 
modifyTimestamp: 20170428110014Z 
	•	Chargement de l’entrée rdn: uid=user2 dans l’annuaire.
 [root@ldap01 tmp]# ldapadd -h localhost -D 
"cn=root,dc=exemple,dc=com" -w secret -f user2.ldif 
adding new entry "uid=user2,ou=users,dc=exemple,dc=com" 
 
[root@ldap01 tmp]# 
¬
Cette méthode de sauvegarde/restauration est disponible dans de nombreux explorateurs LDAP sous la forme d’import/export LDAP.
Bien que possible, il n’est pas conseillé d’utiliser cette méthode dans le cadre d’une restauration totale d’un annuaire, car en fonction de la taille de l’annuaire, le temps de traitement pourrait être considérablement long et non acceptable dans un environnement de production.
b. Restauration hors-ligne
La restauration des données d’un annuaire en mode "hors-ligne" permet d’accélérer le temps de traitement de cette tâche, mais surtout d’envisager la restauration d’un gros volume de données. Cette méthode utilisera le fichier LDIF avec la commande slapadd issue du paquetage openldap-server. Voici ci-dessous un exemple d’utilisation :
### Arrêt du service "slapd" 
[root@ldap01 tmp]# service slapd stop 
Stopping slapd:           [  OK  ] 
 
### Restauration des données 
[root@ldap01 tmp]# slapadd -c -b "dc=exemple,dc=com" -l ldap-bkp.ldif 
59079325 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif" 
59079325 ldif_read_file: checksum error on  
"/etc/openldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif" 
59079325 bdb_db_open: warning - no DB_CONFIG file found in  
directory /var/lib/ldap: (2). 
Expect poor performance for suffix "dc=exemple,dc=com". 
59079325 bdb_monitor_db_open: monitoring disabled; configure  
monitor database to enable 
_#################### 100.00% eta   none elapsed          none fast! 
Closing DB... 
### Démarrage du service "slapd" 
[root@ldap01 tmp]# service slapd start 
Starting slapd:         [  OK  ] 
[root@ldap01 tmp]#