mysql: No longer prepend vroot to the backupdir.
[matthijs/upstream/backupninja-vserver.git] / handlers / ldap.in
index c667ce55e24541ef31ae317b2fbfcb1bd3058ab6..6197183162ae413d89d96eedec1fdc5d491ce8bd 100644 (file)
@@ -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 ""