User Tools

Site Tools


it-artikel:linux:automatische-datensicherung-der-lokalen-ldap-datenbank-anfertigen

Automatische Datensicherung der lokalen LDAP Datenbank anfertigen

Das ist nur ein Beispiel wie man mit wenig Aufwand sich die lokalen LDAP (OpenLDAP) Daten (komplette Datenbank) automatisiert wegsichern kann.

Es sichert die LDAP Daten auf ZWEI WEGEN. Der erste Weg bedient sich dem reinen LDAP Protokoll und versucht so viele Daten wie möglich abzusaugen. Operational Attribute werden auf diesem Wege jedoch nicht ausgegeben. Daher halte ich diese Methode nicht für sehr Sinnvoll. Allerdings wurde ich angehalten die Daten dennoch auch auf diesem WEge zu sichern. Methode zwei sichert die LDAP Datenbank über einen DIREKTEK Zugriff auf die OpenLDAP Datenbank und “dumped” diese sozusagen direkt in ein Textfile. Hier steht nun wirklich ALLES drin! Ein solches Backupfile lässt sich auch mit nur wenig Aufwand schnell wieder auf einen OpenLDAP Server aufbringen.

/usr/local/sbin/backup-ldap-dit.sh

backup-ldap-dit.sh
#!/bin/bash
#set +x
########################################################################
# Backup-Script für den LDAP DIT
# /usr/local/sbin/backup-ldap-dit.sh
# Das Script soll über crontab (/etc/crontab) ein mal am Tag aufgerufen werden.
# Alle wichtigen Daten sind über Variablen am Anfang dieses Scripts konfiguriert
# werden.
#
# Letzte Änderungen:
# ========================
# 2009-07-06	A.Werner	ursprüngliches Script etwas umgeschrieben damit
#				es besser konfigurierbar wird. (Variablen)
#
# 2009-09-23	A.Werner	ADD: retention time parameter hinzugefügt
#				damit lässt sich definieren wie lange backup
#				files aufbewahrt werden sollen.
#				Default 90 Tage
#
# 2009-10-23	A.Werner	FIX: das löschen des temp files nach getaner
#				Arbeit setzt vorraus dass es ein solches File
#				gibt, da es sonst zum fehler kommt. 
#				Daher wird nun das temp file mit "touch"
#				zuvor angelegt.
#
# 2009-11-02	A.Werner	FIX: der FIX vom 23.10. war bullshit!
#				cat $file | xargs > $file ergibt eine leere
#				Datei! Darum musste eine separate temp datei
#				her.
#
#
#######################################################################
# CONFIGURE HERE ! ! !
#######################################################################
#
# Enter Backup-Destination directory here! TRAILING SLASH (/) IS A MUST!
#
DESTINATION='/root/LDAP-BACKUPS/'
 
#
# Enter retention time here! how long should i keep backup files before
# deleting them ?
#
RETENTIONDAYS='90'
 
# Enter your LDAP Manager DN (maybe ROOT DN) here. This LDAP Object needs 
# read permissions in the LDAP DIT to query all data for backup. 
# If not using your LDAP Manager (ROOT DN) then you will have to check ACLs.
#
LDAPMANAGER='cn=ldapmanager,dc=someou,dc=higherou,dc=de'
 
#This file must contain the LDAP Managers Password in CLEARTEXT.
# Make sure this File is only readable by ROOT !!!
#
LDAPMANAGERPASSWD='/etc/ldap/ldap-manager.secret'
 
#Using SSL/TLS ? Set to 'yes' or 'no'
#
TLS='yes'
 
 
###########################################
D=`date +%F-%H%M`
 
#############
#### Delete older files that exceed the retention time
#############
 
OLDFILES=`mktemp`
MYARGS=`mktemp`
 
find "$DESTINATION" -mtime +"$RETENTIONDAYS" >"$OLDFILES"
 
#echo "DEBUG: ES WURDEN `cat $OLDFILES  | wc -l` UEBERALTE FILES GEFUNDEN."
 
if [ $(cat $OLDFILES  | wc -l) -gt 0 ]; then
	cat $OLDFILES | xargs >"$MYARGS"
	rm `cat "$MYARGS"`
fi
 
# cleaning temp files
rm "$OLDFILES"
rm "$MYARGS"
 
#############
#### Backup DIT
#############
 
# Strategie 1:
#
# ANMERKUNG A.WERNER: Ich halte diese Methode für schlecht, 
#			da wichtige Datenfelder nicht angezeigt und damit
#			auch nicht gesichert werden.
ldappw=`cat "$LDAPMANAGERPASSWD"`
 
if [ "$TLS" = "yes" ] ; then
	# if using TLS/SSL
	ldapsearch -D "$LDAPMANAGER" -x -ZZ -w $ldappw > "${DESTINATION}ldapdb-${D}.ldif"
else
	# if NOT using TLS/SSL
	ldapsearch -D "$LDAPMANAGER" -x -w $ldappw > "${DESTINATION}ldapdb-${D}.ldif"
fi
 
# Strategie 2:
#
slapcat -l "${DESTINATION}ldapdb-${D}-slapcat.ldif"
 
#############
#### Secure the Backup files and compress them
#############
chmod 400 "${DESTINATION}ldapdb-${D}.ldif" "${DESTINATION}ldapdb-${D}-slapcat.ldif"
gzip -f "${DESTINATION}ldapdb-${D}.ldif" "${DESTINATION}ldapdb-${D}-slapcat.ldif"
 
exit 0

Axel Werner 2010-12-30 19:43

it-artikel/linux/automatische-datensicherung-der-lokalen-ldap-datenbank-anfertigen.txt · Last modified: 2022-08-31 12:30 by 127.0.0.1