#!/bin/bash # # WizBackup Driver 1.1 # Copyright 2011 Bernie Innocenti # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, # or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # if [ $# -lt 2 ] then echo "Usage: $0 [MACHINE-TAB] [DEST]" echo echo "The MACHINE-TAB file contains hostnames of machines to be backed up, one per line." echo "Empty lines and lines starting with '#' are ignored." exit 1 fi HOSTS=`cat $1 | egrep -v '^#|^ *$'` DEST="$2" LOGGROUP=`basename $1` LOGDIR=/var/log/wizbackup LOCKDIR=/var/lock/wizbackup EXCLUDES_DIR="$DEST/EXCLUDE" today=`date +"%Y%m%d"` mkdir -p $LOGDIR mkdir -p $LOCKDIR if [ "`tty`" = "not a tty" ]; then LOGFILE="$LOGDIR/$LOGGROUP-$today.log" else LOGFILE=/dev/stdout fi for host in $HOSTS; do opts="" for file in "$EXCLUDES_DIR/ALWAYS" "$EXCLUDES_DIR/$host"; do [ -f $file ] && opts="$opts --exclude-from $file" done start_time=$(date +%s) flock -n $LOCKDIR/$host nice ionice -c2 -n6 \ wizbackup "$host:/" "$DEST/$host/" $opts >>$LOGFILE 2>&1 result=$? end_time=$(date +%s) report="$(date +%s):$host:$(($end_time-$start_time)):$result" echo $report >>$LOGDIR/$LOGGROUP-report-$today.log [ $result != 0 ] && echo "$report" >>$LOGDIR/$LOGGROUP-fail-$today.log done # TODO: send fail log email report # TODO: delete logs older than 45 days