Generar un backup en LDIF de OpenLDAP con slapcat

El comando slapcat es una utilidad de OpenLDAP que permite generar un LDIF (LDAP Directory Interchange Format) de la base de datos de un backend. El contenido del LDIF generado puede ser utilizado posteriormente por el comando «slapadd» para restaurar el contenido de la base de datos pero no con ldapadd ya que como sabéis al sintaxis es distinta.

Antes de ver la sintaxis de slapcat es muy importante conocer que según el tipo de backend que estemos utilizando, se podrá ejecutar en caliente (con slapd en ejecución) o no. Para backends back-bdb y back-hdb sí que se puede ejecutar con slapd en ejecución mientras que si el backend es back-ldbm slapd tiene que estar parado.

Ejemplo back-bdb en slapd.conf:

#######################################################################
# Specific Directives for database #1, of type bdb:
# Database specific directives apply to this databasse until another
# 'database' directive occurs
database        bdb

# The base of your directory in database #1
suffix          "dc=example,dc=com"

Para parar slapd podéis ejecutar un KILL al PID, cambiando la ruta en función de donde se guarde el fichero que contiene el PID:

# kill -INT `cat /var/run/slapd.pid`

O si tenéis script de init.d:

# /etc/init.d/slapd stop

La sintaxis es tan sencilla como especificar el fichero de salida (-f) y el base del cual realizar el volcado (-b):

# slapcat -f slapd.ldif -b "dc=example,dc=com"

Otra opción es especificar el ID del backend en lugar del base search:

# slapcat -n 0 -l config.ldif

el ID 0 siempre es el «cn=config» y a partir de ahí empiezan nuestros backends.

# slapcat -n 1 -l example.ldif

Y con esto ya tenéis un backup en LDIF de los backends de vuestro OpenLDAP.