#!/bin/sh # # Backup of all filesystems. # Backup level specified as argument. # # get backup level from command line; defaults to 0 BACKUP_LEVEL=${1:-0} # backup device: non-rewinding 4 Gb SCSI tape export TAPE=/dev/nrst0 TAPE_LENGTH=4194304 # backup command and options BACKUP_CMD=/sbin/dump BACKUP_OPTS="${BACKUP_LEVEL}uB $TAPE_LENGTH" # command to flush filesystem cache SYNC_CMD=/bin/sync # filesystems table FSTAB=/etc/fstab # get all dumpable filesystems FILESYSTEMS=`grep -v '^#' $FSTAB | awk '$5 != 0 { print $2 }'` # can't login when this file exists NOLOGIN=/etc/nologin # prevent logins echo "SYSTEM BACKUP IN PROGRESS - Please try again later" > $NOLOGIN # allow logins again on exit/failure trap "rm $NOLOGIN ; exit" 0 1 2 15 for fs in $FILESYSTEMS do # flush filesystem cache $SYNC_CMD # do it $BACKUP_CMD $BACKUP_OPTS $fs [ $? = 0 ] || { echo "BACKUP FAILED!!!" >&2; exit 1; } done # eject tape mt rewoffl && echo "Backup successful; tape ejected"