tar: Support running on multiple backends.
[matthijs/upstream/backupninja.git] / handlers / tar.in
index 7f0d1471c7a5d8677d169fda490aca15f5b970e5..da8125fcc8db9eb05e4dcbe737447b900c8c59ba 100644 (file)
@@ -1,17 +1,16 @@
 # -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
+# vim: set filetype=sh sw=3 sts=3 expandtab autoindent:
 #
 # tar handler script for backupninja
 
-getconf backupname     `hostname --fqdn`
-getconf backupdir      /var/backups/`hostname --fqdn`
-getconf compress       bzip
-getconf includes       "/etc /home /usr/local"
-getconf excludes       "/tmp /proc /dev /sys /net /misc /media /srv /selinux"
+getconf compress        bzip
+getconf includes        "/etc /home /usr/local"
+getconf excludes        "/tmp /proc /dev /sys /net /misc /media /srv /selinux"
 
-getconf TAR            `which tar`
-getconf EXTENSION      tar
-getconf DATE           `which date`
-getconf DATEFORMAT     "%Y.%m.%d-%H%M"         
+getconf TAR             `which tar`
+getconf EXTENSION       tar
+getconf DATE            `which date`
+getconf DATEFORMAT      "%Y.%m.%d-%H%M"
 
 # See if vservers are configured
 if [ "$vservers" = "yes" ]
@@ -19,61 +18,75 @@ then
    warning "vservers enabled, but tar does not support it!"
 fi
 
-if [ ! -d "$backupdir" ]
-then
-   mkdir -p "$backupdir" || fatal "Can not make directory $backupdir"
-fi
+function make_backup () {
+   getconf backupdir       /var/backups/`hostname --fqdn`
+   backupdir=`interpolate "$backupdir"`
+   getconf backupname      `hostname --fqdn`
+   backupname=`interpolate "$backupname"`
 
-if [ ! -w "$backupdir" ]
-then
-   fatal "Directory $backupdir is not writable"
-fi
+   if [ ! -d "$backupdir" ]
+   then
+      mkdir -p "$backupdir" || fatal "Can not make directory $backupdir"
+   fi
 
-## DO IT #################################################
-#
-# here we grab a list of the packages installed and removed.
-#
+   if [ ! -w "$backupdir" ]
+   then
+      fatal "Directory $backupdir is not writable"
+   fi
+
+   ## DO IT #################################################
+   #
+   # here we grab a list of the packages installed and removed.
+   #
 
-case $compress in
-   "compress")
-      compress_option="-Z"
-      EXTENSION="tar.compress"
-      ;;
-   "gzip")
-      compress_option="-z"
-      EXTENSION="tgz"
-      ;;
-   "bzip")
-      compress_option="-j"
-      EXTENSION="tar.bz2"
-      ;;
-   "none")
-      compress_option=""
-      ;;
-   *)
-      warning "Unknown compress filter ($tar_compress)"
-      compress_option=""
-      EXTENSION="tgz"
-      ;;
-esac
+   case $compress in
+      "compress")
+         compress_option="-Z"
+         EXTENSION="tar.compress"
+         ;;
+      "gzip")
+         compress_option="-z"
+         EXTENSION="tgz"
+         ;;
+      "bzip")
+         compress_option="-j"
+         EXTENSION="tar.bz2"
+         ;;
+      "none")
+         compress_option=""
+         ;;
+      *)
+         warning "Unknown compress filter ($tar_compress)"
+         compress_option=""
+         EXTENSION="tgz"
+         ;;
+   esac
 
-exclude_options=""
-for i in $excludes
-do
-   exclude_options="$exclude_options --exclude $i"
-done
+   exclude_options=""
+   for i in $excludes
+   do
+      exclude_options="$exclude_options --exclude $root$i"
+   done
 
-debug "Running backup: " $TAR -c -p -v $compress_option $exclude_options \
-   -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
-   $includes 
+   include_options=""
+   for i in $includes
+   do
+      include_options="$include_options $root$i"
+   done
 
-$TAR -c -p -v $compress_option $exclude_options \
-   -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
-   $includes \
-   > "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.list \
-   2> "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.err
+   debug "Running backup: " $TAR -c -p -v $compress_option $exclude_options \
+      -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
+      $include_options
 
-[ $? -ne 0 ] && fatal "Tar backup failed" 
+   $TAR -c -p -v $compress_option $exclude_options \
+      -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
+      $include_options \
+      > "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.list \
+      2> "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`.err
 
+   [ $? -ne 0 ] && fatal "Tar backup failed"
 
+}
 
+init_source_hosts
+run_for_source_hosts make_backup