# HG changeset patch # User "Heiko Schlittermann" # Date 1385495416 0 # Node ID 63efa79af06022ff3e702311f48c998a9cd32b1a initial version diff -r 000000000000 -r 63efa79af060 ldap-backup --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ldap-backup Tue Nov 26 19:50:16 2013 +0000 @@ -0,0 +1,43 @@ +#! /bin/bash +# to be used in /etc/cron.daily/ +# source: hg clone https://ssl.schlittermann.de/hg/ldap-backup +# (c) 2013 Heiko Schlittermann + +set -e +export LC_ALL=C + + +if test -t 0; then + # terminal/interactive + destination=${1:?Need destination directory} +else + # cron + destination=${1:-/var/backups/ldap} + exec &>/tmp/$(basename $0).log +fi + +test -d "$destination" || { + echo "$0: \`$destination' is not a directory" >&2 + exit +} + +tag=$(date -I) +tmpdir=$(mktemp -d --suffix=.$(basename $0)) +test "/tmp" = $(dirname $tmpdir) \ + && trap "rm -rf $tmpdir" EXIT + +cd $tmpdir +dir="ldap.$tag" +mkdir "$dir" + +# save the config db +slapcat -n 0 >"$dir"/cn=config.ldif + +grep olcSuffix: "$dir"/cn=config.ldif | cut -f2 -d' ' \ + | while read suffix; do + slapcat -b "$suffix" > "$dir/$suffix.ldif" + tar czf "$destination"/"$dir".tar.gz.$$ "$dir" + mv "$destination"/"$dir".tar.gz.$$ \ + "$destination"/"$dir".tar.gz + +done