diff options
| author | Micah Anderson <micah@riseup.net> | 2006-04-12 21:17:06 +0000 | 
|---|---|---|
| committer | Micah Anderson <micah@riseup.net> | 2006-04-12 21:17:06 +0000 | 
| commit | d3875324de5847b690cef19a8fd859c76dae42cd (patch) | |
| tree | 567becb1b386497b769c005d420077ebe951d6b2 /handlers | |
| parent | ea111f2a5cb4bf2e155a2e55f119495e5c377221 (diff) | |
| download | backupninja-d3875324de5847b690cef19a8fd859c76dae42cd.tar.gz backupninja-d3875324de5847b690cef19a8fd859c76dae42cd.tar.bz2 | |
Added tar handler
Diffstat (limited to 'handlers')
| -rw-r--r-- | handlers/tar | 79 | ||||
| -rw-r--r-- | handlers/tar.helper | 94 | 
2 files changed, 173 insertions, 0 deletions
| 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 +} + | 
