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 +} + |