#!/bin/sh set -eu umask 027 PATH="/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin" if [ "$(whoami)" != "root" ]; then echo "ERR: Script needs to be run as root user" 1>&2 exit 1 fi BACKUPDIR="/srv/backup" BACKUPAGE="30" DATE="$(date '+%Y-%m-%d')" ldapsearch -LLL -x -H ldapi:// -s base -b 'cn=Databases,cn=Monitor' \ '(objectClass=*)' namingContexts | \ sed -n 's/^namingContexts: \(.*\)/\1/p' | while read -r db ; do [ "${db}" = "cn=config" ] && continue if ! slapcat -f /etc/openldap/slapd.conf -b "${db}" 2> /dev/null | \ gzip > "${BACKUPDIR}/${db}.${DATE}.gz" ; then echo "ERR: Failed to backup database ${db}" 1>&2 continue fi chgrp backup "${BACKUPDIR}/${db}.${DATE}.gz" done cd ${BACKUPDIR} && { find . -xdev -depth -mindepth 1 -maxdepth 1 -type f -mtime +${BACKUPAGE} \ -name '*.gz' -execdir rm -f -- {} \; }