aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--handlers/tar79
-rw-r--r--handlers/tar.helper94
3 files changed, 174 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6cf8898..931d471 100644
--- 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
index 0000000..7f0d147
--- /dev/null
+++ b/handlers/tar
@@ -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
index 0000000..cc9a89b
--- /dev/null
+++ b/handlers/tar.helper
@@ -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
+}
+