backup_run.sh
- #!/bin/sh
- # backup_run
- # script to run the backups
- # loads in a setting file for the user to change
- SOURCE=/home/bob/backup.defaults
- check_source()
- {
- # check_source
- # can we load the file
- # backup.defaults is the source file containing config/functions
- # make sure your path includes this directory you are runing from
- if [ -r $SOURCE ];then
- . $SOURCE # load $source
- else
- echo "`basename $0`: cannot locate default file"
- exit 1
- fi
- }
- header()
- {
- # header
- USER=`whoami`
- MYDATE=`date +%A" "%e" of "%B-%Y`
- clear
- cat << HH
- User: $USER $MYDATE
- NETWORK SYSTEM BACKUP
- =====================
- HH
- }
- change_settings()
- {
- # change_settings
- # let the user see the default settings..
- header
- echo "Valid Entries Are..."
- echo "Tape Device: rmt0,rmt1,rmt3"
- echo "Mail Admin:yes,no"
- echo "Backup Type: full,normal,sybase "
- while :
- do
- echo -n -c "\n\n Tape Device To Be Used For This Backup [$_DEVICE] :"
- read T_DEVICE
- : ${T_DEVICE:=$_DEVICE}
- case $T_DEVICE in
- rmt0|rmt1|rmt3) break
- ;;
- *) echo "The device are either...rmt0,rmt1,rmt3"
- ;;
- esac
- done
- # if the user hits return on any of the fields, the default value will be used
- while :
- do
- echo -n "Mail Admin When Done [$_INFORM] : "
- read T_INFORM
- : ${T_INFORM:=$_INFORM}
- case $T_INFORM in
- yes|Yes) break
- ;;
- no|No) break
- ;;
- *) echo "The choices are yes,no"
- ;;
- esac
- done
- while :
- do
- echo -n "Backup Type [$_TYPE] :"
- read T_TYPE
- : ${T_TYPE:=$_TYPE}
- case $T_TYPE in
- Full|full) break
- ;;
- Normal|normal) break
- ;;
- Sybase|sybase) break
- ;;
- *) echo "The choices are either ... full,normal,sybase"
- esac
- done
- # re-assign the temp varialbes back to original variables that
- # were loaded in
- _DEVICE=$T_DEVICE;_INFORM=$T_INFORM;_TYPE=$T_TYPE
- }
- show_settings()
- {
- # display current settings
- cat << HH
- Default Settings Are...
- Tape Device To Be Used : $_DEVICE
- Mail Admin When Done : $_INFORM
- Type Of Backup : $_TYPE
- Log File Of Backup : $_LOGFILE
- HH
- }
- get_code()
- {
- # users get 3 attempts at entering the correct code
- # _CODE is loaded in from the source file
- clear
- header
- _COUNTER=0
- echo "YOU MUST ENTER THE CORRECT CODE TO BE ABLE TO CHANGE DEFAULT SETTINGS"
- while :
- do
- _COUNTER=`expr $_COUNTER + 1`
- echo -n "Enter the code to change the settings: "
- read T_CODE
- # echo $_COUNTER
- if [ "$T_CODE" = "$_CODE" ];then
- return 0
- else
- if [ "$_COUNTER" -gt 3 ];then
- echo "Sorry incorrect code entered, you cannot change the settings..."
- return 1
- fi
- fi
- done
- }
- check_drive()
- {
- # make sure we can rewind the tape
- mt -f /dev/$_DEVICE rewind > /dev/null 2>&1
- if [ $? -ne 0 ];then
- return 1
- else
- return 0
- fi
- }
- #====================== main =======================
- # can we source the file
- check_source
- header
- # display the loaded in variables
- show_settings
- # ask user if he/she wants to change any settings
- if continue_prompt "Do you wish To Change Some of The System Defaults" "Y";
- then
- echo $?
- # yes then enter code name
- if get_code;then
- # change some settings
- change_settings
- fi
- fi
- #------------------ got settings... now do backup
- if check_drive;then
- echo "tape OK..."
- else
- echo "Cannot rewind the tape..Is it in the tape drive???"
- echo "check it out"
- exit 1
- fi
- # file system paths to backup
- case $_TYPE in
- Full|full)
- BACKUP_PATH="sybase syb/suppor etc var bin apps usr/local"
- ;;
- Normal|normal)
- BACKUP_PATH="etc var bin apps usr/local"
- ;;
- Sybase|sybase)
- BACKUP_PATH="sybase syb/suppor"
- ;;
- esac
- # now for backup
- cd /
- echo "Now starting backup......"
- find $BACKUP_PATH -print | cpio -ovB -O /dev/$_DEVICE >> $_LOGFILE 2>&1
- # if the above cpio does not work on your system try cpio below, instead
- # find $BACKUP_PATH -print | cpio -ovB > /dev/$_DEVICE >> $_LOGFILE 2>&1
- # to get more information on the tape change -ovB to -ovcC66536
- if [ "$_INFORM" = "yes" ];then
- echo "Backup finished check the log file" | mail admin
- fi
backup.defaults
- #!/bin/sh
- # backup.defaults
- # configuration default file for network backups
- # edit this file at your own
- # name backup.defaults
- # --------------------------------------------
- # not necessary for the environments to be in quotes.. but
- _CODE="comet"
- _LOGFILE="/appdva/backup/log.`date +%y%m%d`"
- _DEVICE="rmt0"
- _INFORM="yes"
- _TYPE="Full"
- #---------------------------------------------
- continue_prompt()
- {
- # continue_prompt
- # to call: continue_prompt "string to display" default_answer
- _STR=$1
- _DEFAULT=$2
- # check we have the right params
- if [ $# -lt 1 ];then
- echo "continue_prompt: I need a string to display"
- return 1
- fi
- while :
- do
- echo -n "$_STR [Y..N] [$_DEFAULT]:"
- read _ANS
- if [ "$_ANS" = "" ];then
- : ${_ANS:=$_DEFAULT}
- case $_ANS in
- Y) return 0
- ;;
- N) return 1
- ;;
- esac
- fi
- # user has selected something
- case $_ANS in
- y|Y|Yes|YES)
- return 0
- ;;
- n|N|No|NO)
- return 1
- ;;
- *) echo "Answer either Y or N, default is $_DEFAULT"
- ;;
- esac
- echo $_ANS
- done
- }
$./backup_run.sh backup.defaults
阅读(1616) | 评论(0) | 转发(1) |