#!/bin/sh PATH=/usr/brl/sbin:/bin:/usr/bin:/etc # Usage: Backup [/dev/[r]dk## ...] # More than one filesystem may be specified, seperated by blanks. # With no arguments, Backup defaults to the uncommented entries # in /etc/fstab (not including swap, tmp and dump freq = 0). # ### Special version for the SGI machines. ### -Mike Muuss, 16-March-90 ### Modified 27-Sep-90 for short tapes, -Chuck Kennedy ### Modified 25-Feb-91 to add "e" option, for EFS format tapes (SGI native) ### Modified 5-March-91 to remove "e" option. Dump in compatible BSD format. ### if /bin/test $# -lt 1 then # reinvoke this shell script $0 `awk '{ if(($1!~/^#/)&&($5!~/0/)&&($2!~/tmp/)&&($3!~/swap/)) print $1} ' /etc/fstab` exit fi echo " " echo " BEGINNING OF BACKUP SHELL PROCEDURE" echo " " echo " ENTER LEVEL OF DUMP: \c" while read level do if (/bin/test x"$level" = x) then echo " no backup executed " exit fi case $level in 0) echo "LEVEL $level selected"; echo ""; echo " IF THE SYSTEM IS IN SINGLE USER MODE ENTER S"; echo " OTHERWISE ENTER M FOR MULTI-USER:\c"; while read mode do case $mode in s*|S*) echo SINGLE USER MODE SELECTED; break;; m*|M*) echo MULTI USER MODE SELECTED; break;; *) echo "ENTER S FOR SINGLE OR M FOR MULTI USER MODE\c": ;; esac done ; break ;; 1) echo "LEVEL $level selected"; mode="m"; break;; 2) echo "LEVEL $level selected"; mode="m"; break;; 3) echo "LEVEL $level selected"; mode="m"; break;; 4) echo "LEVEL $level selected"; mode="m"; break;; *) echo " LEVEL MUST BE BETWEEN 0 AND 4"; echo " PLEASE ENTER LEVEL OF DUMP: \c";; esac done echo "" while eval do echo " CURRENT DATE AND TIME IS \c" /bin/date echo " IS THE DATE AND TIME CORRECT " echo " ... PLEASE ENTER YES OR NO: \c" read response case $response in y*|Y*) break;; n*|N*) echo " ENTER NEW DATE \"yymmddhhmm\"(or to skip setting the date): \c"; read new_date; date $new_date 2>&1 > /dev/null;; *) ;; esac done echo " " echo " ENTER TAPE DENSITY (1600 or 6250): \c" while read density do case $density in 1600) break;; 6250) break;; *) echo " ENTER TAPE DENSITY (1600 or 6250): \c";; esac done echo " DENSITY $density selected" while eval do echo " " echo " ENTER LOCAL TAPE DRIVE NUMBER (0 or 1), OR REMOTE HOST AND" echo " FULL PATH NAME (e.g. vmb:/dev/rmt0 ): \c" read drive case "$drive" in 0|1|2|3|4|5|6|7) device=/dev/rmt/xmt0d$drive.$density if /bin/test ! "(" -w $device ")" then echo " " echo " ERROR, DRIVE $device DOES NOT EXIST" continue fi;; ""|" ") echo " " echo " ERROR, NULL RESPONSE" continue;; *) device=$drive mt -t $device exist status=$? case "$status" in 0) eval;; # OK 1) echo " " echo " (NOTICE: $device NOT READY, PROCEEDING)" echo " ";; *) echo " ERROR: $device INVALID, status=$status" continue;; esac;; esac break done echo " TAPE DEVICE $device SELECTED." echo " " echo " THE CURRENT MOUNTED FILE-SYSTEM(S) CONFIGURATION INFORMATION IS:" df echo " " echo " THE FILE-SYSTEMS ENTERED FOR BACKUP ARE ..." for i do echo " $i" done echo " " echo " ARE THE FILE-SYSTEMS ENTERED CORRECT ? " echo " ... PLEASE ENTER YES OR NO: \c" while read response do case $response in y*|Y*) break;; n*|N*) echo "PLEASE RUN BACKUP AGAIN WITH THE PROPER FILE-SYSTEMS"; exit;; *) echo " PLEASE ENTER YES OR NO: \c" esac done if (test "$mode" = "s" || test "$mode" = "S") then echo " BEGINNING FILE SYSTEM CONSISTENSY CHECK ON ENTERED FILE SYSTEMS : " echo " " echo " PREEN FILESYSTEMS " /etc/preen case $? in 0) echo " PREEN SUCCESSFUL" echo " " ;; 4) echo " PLEASE REBOOT AND RUN BACKUP AGAIN" /etc/halt -n -q ;; 8) echo " PREEN UNSUCCESSFUL" echo " " echo " exiting backup procedure ..." exit esac fi # # for i do echo " MARK AND LOAD TAPE FOR DUMPING ... $i" echo " ENTER YES WHEN PREPARED TO CONTINUE ... \c" while read response do case $response in y*|Y*) break;; *) echo " ENTER YES WHEN READY TO PROCEED: \c";; esac done echo " DUMPING FILE SYSTEM : $i" echo " " echo dump "$level"usdf 2000 $density $device $i dump "$level"usdf 2000 $density $device $i status=$? case "$status" in 0) eval;; # OK *) echo " " echo ' **** ERROR ****', DUMP OF $i FAILED echo " ";; esac done echo " BACKUP COMPLETE " if (test "$mode" = "s" || test "$mode" = "S") then echo " type control/d to go timesharing" fi # @(#)$Header: Backup.sh,v 1.7 89/01/11 10:43:54 mrwil BRL $