ldap,mysql,pgsql: use bash pipefail option so that failed dumps are reported as such
[matthijs/upstream/backupninja.git] / handlers / ldap.in
index 8ff1ccf097105d527071e793371494c8b8911120..fda24d08878304f044821d08c5608cfde171402f 100644 (file)
@@ -1,4 +1,5 @@
 # -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
+# vim: set filetype=sh sw=3 sts=3 expandtab autoindent:
 #
 # openldap backup handler script for backupninja
 #
@@ -35,25 +36,25 @@ dbsuffixes=(`@AWK@ 'BEGIN {OFS=":"} /[:space:]*^database[:space:]*\w*/ {db=$2};
 if [ "$ldif" == "yes" ]; then
    dumpdir="$backupdir"
    [ -d $dumpdir ] || mkdir -p $dumpdir
-   
+
    if [ "$databases" == 'all' ]; then
       dbcount=`grep '^database' $conf | wc -l`
       let "dbcount = dbcount - 1"
       databases=`seq 0 $dbcount`;
-   fi  
-   
+   fi
+
    for db in $databases; do
       if [ `expr index "$db" "="` == "0" ]; then
-                       # db is a number, get the suffix.
+                        # db is a number, get the suffix.
          dbsuffix=${dbsuffixes[$db]/*:/}
       else
          dbsuffix=$db
       fi
-               # some databases don't have suffix (like monitor), skip these
+                # some databases don't have suffix (like monitor), skip these
       if [ "$dbsuffix" == "" ]; then
          continue;
       fi
-      
+
       if [ "$method" == "slapcat" ]; then
          execstr="$SLAPCAT -f $conf -b $dbsuffix"
       else
@@ -74,23 +75,23 @@ if [ "$ldif" == "yes" ]; then
             debug "Shutting down ldap server..."
             /etc/init.d/slapd stop
          fi
-         
-        ext=
-        if [ "$compress" == "yes" ]; then
-           ext=".gz"
-        fi
+
+         ext=
+         if [ "$compress" == "yes" ]; then
+            ext=".gz"
+         fi
          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 --rsyncable > $dumpdir/$dbsuffix.ldif.gz"
          else
             execstr="$execstr > $dumpdir/$dbsuffix.ldif"
          fi
          debug "$execstr"
-         output=`su root -c "$execstr" 2>&1`
+         output=`su root -c "set -o pipefail ; $execstr" 2>&1`
          code=$?
          if [ "$code" == "0" ]; then
             debug $output
@@ -99,13 +100,13 @@ if [ "$ldif" == "yes" ]; then
             warning $output
             warning "Failed ldif export of $dbsuffix"
          fi
-         
+
          if [ "$restart" == "yes" ]; then
             debug "Starting ldap server..."
             /etc/init.d/slapd start
          fi
       fi
-   done        
+   done
 fi
 
 return 0