Added tar handler

This commit is contained in:
Micah Anderson 2006-04-12 21:17:06 +00:00
parent ea111f2a5c
commit d3875324de
3 changed files with 174 additions and 0 deletions

View File

@ -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

79
handlers/tar Normal file
View File

@ -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"

94
handlers/tar.helper Normal file
View File

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