Tape Backup

!/bin/bash

# Backup script to backup user data to tape

# Some variables to specify

tape_dev="/dev/st0"

tape_size="20/40GB"

backup_dirs="/etc /shares /var"

email="reports@pcb.co.za"

log_file="/var/log/backup.log"

##########################################################

mv $log_file.4 $log_file.5

mv $log_file.3 $log_file.4

mv $log_file.2 $log_file.3

mv $log_file.1 $log_file.2

mv $log_file $log_file.1

##########################################################

host=`hostname`

data_size=`du -sch $backup_dirs | grep total`

begin=`date`

# Write start date to log

echo "Started: `date`" > $log_file

echo "Backup of $host data ${data_size}" >> $log_file

echo "" >> $log_file

if test `/bin/mt -f $tape_dev status|grep -c ONLINE` -ge 1;

then

tapestatus="Tape detected Proceeding with backup!"

# Do the backup and generate a log

# if tar -czvf $tape_dev $backup_dirs >> $log_file 2>&1

if tar -czvf $tape_dev $backup_dirs --label="Backup created on `date '+%d-%B-%Y'`." >> $log_file 2>&1

then

status="successful"

else

status="error"

fi

else

status="error"

tapestatus="No tape detected!!!"

echo "No tape detected!!!" >> $log_file

fi

# Write end date to log

echo "" >> $log_file

echo "Completed: `date` Status: $status" >> $log_file

# email a report

mail -s "Backup $status at $host" "$email" << EOF

===================================================

${data_size} data

${tape_size} tape

Tape Status $tapestatus

`head ${log_file}`

.

.

.

`tail ${log_file}`

===================================================

Backup Script version ${version}

EOF

# Rewind & Eject tape

mt -f $tape_dev rewind

mt -f $tape_dev offline