X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=handlers%2Fldap.in;h=6197183162ae413d89d96eedec1fdc5d491ce8bd;hb=ac915b2a77c0bcbcacc8b07042c7d3d2eeebb79a;hp=c667ce55e24541ef31ae317b2fbfcb1bd3058ab6;hpb=f1fa36165a9160da7ddd0f0a9647d238e731e65f;p=matthijs%2Fupstream%2Fbackupninja.git diff --git a/handlers/ldap.in b/handlers/ldap.in index c667ce5..6197183 100644 --- a/handlers/ldap.in +++ b/handlers/ldap.in @@ -26,7 +26,7 @@ fi ### VServers # If vservers are configured, check that the ones listed in $vsnames do exist. local usevserver=no -if [ $vservers_are_available = yes ]; then +if [ $vservers_are_available = yes -a -n "$vsnames" ]; then if [ "$vsnames" = all ]; then vsnames="$found_vservers" else @@ -40,34 +40,40 @@ else [ -z "$vsnames" ] || warning 'vservers support disabled in backupninja.conf, vsnames configuration line will be ignored' fi +[ "$restart" = yes -a "$method" = ldapsearch ] && warning 'restart option should not be used with the ldapsearch method.' + status="ok" -make_backup() { - vsname=$1 +function make_backup() { + vsname="$1" if [ -z "$vsname" ]; then info "Running on host" vdir="" vexec="" else + if ! vservers_running "$vsname"; then + error "vserver $vsname is not running!" + return 1 + fi info "Running on vserver $vsname" vdir="$VROOTDIR/$vsname" vexec="$VSERVER $vsname exec" fi - [ -f $vdir$conf ] || fatal "slapd config file ($conf) not found" - [ -d $backupdir ] || mkdir -p $backupdir - [ -d $backupdir ] || fatal "Backup directory '$backupdir'" + dumpdir="`interpolate "$backupdir" "$vsname"`" + info "Backing up to dir '$dumpdir'" + + [ -f "$vdir$conf" ] || fatal "slapd config file ($conf) not found" + [ -d "$dumpdir" ] || mkdir -p "$dumpdir" + [ -d "$dumpdir" ] || fatal "Backup directory '$dumpdir'" dbsuffixes=(`@AWK@ 'BEGIN {OFS=":"} /[:space:]*^database[:space:]*\w*/ {db=$2}; /^[:space:]*suffix[:space:]*\w*/ {if (db=="bdb"||db=="hdb"||db="ldbm") print db,$2}' $vdir$conf|@SED@ -e 's/[" ]//g'`) ## LDIF DUMP if [ "$ldif" == "yes" ]; then - dumpdir="$backupdir" - [ -d $dumpdir ] || mkdir -p $dumpdir - if [ "$databases" == 'all' ]; then - dbcount=`grep '^database' $vdir$conf | wc -l` + dbcount=`grep '^database' "$vdir$conf" | wc -l` let "dbcount = dbcount - 1" databases=`seq 0 $dbcount`; fi @@ -109,15 +115,15 @@ make_backup() { if [ "$compress" == "yes" ]; then ext=".gz" fi - touch $dumpdir/$dbsuffix.ldif$ext - if [ ! -f $dumpdir/$dbsuffix.ldif$ext ]; then + touch "$dumpdir/$dbsuffix.ldif$ext" + if [ ! -f "$dumpdir/$dbsuffix.ldif$ext" ]; then fatal "Couldn't create ldif dump file: $dumpdir/$dbsuffix.ldif$ext" fi if [ "$compress" == "yes" ]; then - execstr="$execstr | $GZIP > $dumpdir/$dbsuffix.ldif.gz" + execstr="$execstr | $GZIP > \"$dumpdir/$dbsuffix.ldif.gz\"" else - execstr="$execstr > $dumpdir/$dbsuffix.ldif" + execstr="$execstr > \"$dumpdir/$dbsuffix.ldif\"" fi # Run inside the vserver if needed execstr="$vexec $execstr" @@ -143,7 +149,7 @@ make_backup() { if [ $usevserver = yes ]; then for vserver in $vsnames; do - make_backup $vserver + make_backup "$vserver" done else make_backup ""