Added tar handler
authormicah <micah@758a04ac-41e6-0310-8a23-8373a73cc35d>
Wed, 12 Apr 2006 21:17:06 +0000 (21:17 +0000)
committermicah <micah@758a04ac-41e6-0310-8a23-8373a73cc35d>
Wed, 12 Apr 2006 21:17:06 +0000 (21:17 +0000)
git-svn-id: http://code.autistici.org/svn/backupninja/trunk@384 758a04ac-41e6-0310-8a23-8373a73cc35d

ChangeLog
handlers/tar [new file with mode: 0644]
handlers/tar.helper [new file with mode: 0644]

index 6cf8898187a03a9c895ed61740f354dcaa790223..931d471fd1e884c2dd23af4a2b71aa1ed003c1c5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@ version 0.9.4 -- unreleased
     backupninja changes
        Recursively ignore subdirs in /etc/backup.d (Closes: #361102)
     handler changes
+        Added tar handler
        mysql:
         . Fixed improper use of $vuserhome (Debian: #351083)
         . Fixed erroneous removal of tmpfile when it didn't exit
diff --git a/handlers/tar b/handlers/tar
new file mode 100644 (file)
index 0000000..7f0d147
--- /dev/null
@@ -0,0 +1,79 @@
+# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
+#
+# 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 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" ]
+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
+
+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
+
+exclude_options=""
+for i in $excludes
+do
+   exclude_options="$exclude_options --exclude $i"
+done
+
+debug "Running backup: " $TAR -c -p -v $compress_option $exclude_options \
+   -f "$backupdir/$backupname-"`$DATE "+$DATEFORMAT"`".$EXTENSION" \
+   $includes 
+
+$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
+
+[ $? -ne 0 ] && fatal "Tar backup failed" 
+
+
+
diff --git a/handlers/tar.helper b/handlers/tar.helper
new file mode 100644 (file)
index 0000000..cc9a89b
--- /dev/null
@@ -0,0 +1,94 @@
+# -*- mode: sh; sh-basic-offset: 3; indent-tabs-mode: nil; -*-
+
+HELPERS="$HELPERS tar:tar_backup"
+
+tar_wizard() {
+   tar_title="Tar action wizard"
+
+   backupname=`hostname --fqdn`
+
+   inputBox "$tar_title" "When to run this action?" "everyday at 01"
+   [ $? = 1 ] && return
+   tar_when_run="when = $REPLY"
+
+   inputBox "$tar_title" "\"Name\" of backups" "$backupname"
+   [ $? = 1 ] && return
+   tar_backupname="backupname = $REPLY"
+   backupname="$REPLY"   
+
+   inputBox "$tar_title" "Directory where to store the backups" "/net/backups/$backupname"
+   [ $? = 1 ] && return
+   tar_backupdir="backupdir = $REPLY"
+
+   radioBox "$tar_title" "Compression" \
+       "none"     "do not filter trough" off \
+       "compress" "filter trough compress" off \
+       "gzip"     "filter trough gzip" off \
+       "bzip"     "filter trough bzip" on 
+   [ $? = 1 ] && return;    
+   result="$REPLY"
+   tar_compress="compress = $REPLY "
+
+   REPLY=
+   while [ -z "$REPLY" ]; do
+      formBegin "$tar_title: Includes"
+         formItem "Include:" /etc
+         formItem "Include:" /home
+         formItem "Include:" /usr/local
+         formItem "Include:"
+         formItem "Include:"
+         formItem "Include:"
+         formItem "Include:"
+         formItem "Include:"
+         formItem "Include:"
+         formItem "Include:"
+         formItem "Include:"
+      formDisplay
+      [ $? = 0 ] || return 1
+      tar_includes="includes = "
+      for i in $REPLY; do
+        [ -n "$i" ] && tar_includes="$tar_includes $i"
+      done
+   done
+
+   REPLY=
+   while [ -z "$REPLY" ]; do
+      formBegin "$tar_title: Excludes"
+         formItem "Exclude:" /tmp 
+         formItem "Exclude:" /proc
+         formItem "Exclude:" /sys
+         formItem "Exclude:" /dev
+         formItem "Exclude:" /srv
+         formItem "Exclude:" /media
+         formItem "Exclude:" /misc
+         formItem "Exclude:" /net
+         formItem "Exclude:" /selinux
+         formItem "Exclude:" 
+         formItem "Exclude:"
+      formDisplay
+      [ $? = 0 ] || return 1
+      tar_excludes="excludes = "
+      for i in $REPLY; do
+        [ -n "$i" ] && tar_excludes="$tar_excludes $i"
+      done
+   done
+
+# Save the config 
+   get_next_filename $configdirectory/10.tar
+   cat > $next_filename <<EOF
+$tar_when_run
+$tar_backupname
+$tar_backupdir
+$tar_compress
+$tar_includes
+$tar_excludes
+
+# tar binary - have to be GNU tar
+#TAR=/bin/tar
+#DATE          /bin/date
+#DATEFORMAT    "%Y.%m.%d-%H%M"
+
+EOF
+   chmod 600 $next_filename
+}
+