Shell script para hacer un full backup a cinta con FreeBSD

139

Existen varias maneras de generar un Full Backup, y en este caso nos abocaremos de generar un Full Backup incremental en FreeBSD, aqui anexo un shell script para generar, esto lo manda a una cinta (Tape).

#!/bin/sh
# Shell Script para hacer copias de seguridad completas e incrementales en cintas.
# Probado en FreeBSD 6. X y 7. X – 32 bits y 64 bits.
# Puede funcionar en OpenBSD / NetBSD.
#
#

# Settings
LOGGER=/usr/bin/logger
DUMP=/sbin/dump
# FSL=”/dev/aacd0s1a /dev/aacd0s1g”
FSL=”/usr /var”
NOW=$(date +”%a”)
LOGFILE=”/var/log/dumps/$NOW.dump.log”
TAPE=”/dev/sa0″
 
mk_auto_dump(){
    local fs=$1
    local level=$2
    local tape=”$TAPE”
    local opts=””
 
    opts=”-${level}uanL -f ${tape}”
        # run backup
    $DUMP ${opts} $fs
    if [ “$?” != “0” ];then
               $LOGGER “$DUMP $fs FAILED!”
               echo “*** DUMP COMMAND FAILED – $DUMP ${opts} $fs. ***”
    else
          $LOGGER “$DUMP $fs DONE!”
    fi
}
 
dump_all_fs(){
    local level=$1
    for f in $FSL
    do
        mk_auto_dump $f $level
    done
}
 
init_backup(){
    local d=$(dirname $LOGFILE)
    [ ! -d ${d} ] && mkdir -p ${d}
}
 
init_backup
 
case $NOW in
    Mon)    dump_all_fs 0;;
    Tue)    dump_all_fs 1;;
    Wed)    dump_all_fs 2;;
    Thu)    dump_all_fs 3;;
    Fri)     dump_all_fs 4;;
    Sat)     dump_all_fs 5;;
    Sun)     dump_all_fs 6;;
    *) ;;
esac > $LOGFILE 2>&1