Шрифт:
#которые были загружены
_DEVICE=$T_DEVICE;
_INFORM=$T_INFORM;
_INFORM=$T_INFORM
}
show_settings
# отображение текущих настроек
{
cat << MAYDAY
Default Settings Are…
Tape Device To Be Used : $_DEVICE
Mail Admin When Done : $_INFORM
Type Of Backup : $_TYPE
Log file of backup : $_LOGFILE
MAYDAY
}
get_code
{
#пользователи имеют 3 попытки для ввода правильного кода
#_CODE загружается из исходного файла
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_drivef {
# перемотка ленты
mt -f /dev/$_DEVICE rewind > /dev/null 2>&1
if [ $?
– ne 0 ]; then
return 1 else
return 0
fi
)
#========== main ==============
# чтение файла с параметрами
check_source
header
#отображение содержимого переменных show_settings
#уточнение у пользователя, желает ли он изменить настройки
if continue_prompt "Do you wish To Change Some Of The System Defaults" "Y"; then
# да, тогда введите имя
if get_code; then
# изменение параметров change_settings fi fi
# параметры получены, резервное копирование
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
# что копировать
case $_TYPE in
Full|full)
BACKUP_PATH="sybase syb/support etc var bin apps use/local";;
Normal|normal)
BACKUP_PATH="etc var bin apps usr/local";;
Sybase|sybase)
BACKUP_PATH="Sybase syb/support";;
esac
# резервное копирование
cd /
echo "Now starting backup "
find $BACKUP_PATH -print | cpio -ovB -O /dev/$_DEVICE >> $_LOGFILE 2>&1
#если приведенная выше команда cpio не выполняется в системе,
#воспользуйтесь командой cpio, приведенной ниже
#find $BACKUP_PATH -print [ cpio -ovB > /dev/$_DEVICE >> $_LOGFILE 2>&1
#для получения дополнительной информации измените -ovB на -ovcC66536
if [ "$_INFORM"="yes" ]; then
echo "Backup finished check the log file" | mail admin fi
Файл backup.defaults содержит заданные по умолчанию настройки наряду с функцией continue_prompt. Ниже приводится содержимое файла.
$ pg backup.defaults
#!/bin/sh
#backup.defaults
#файл конфигурации, заданный по умолчанию, для сетевых резервных копий
#редактируете его на свой страх и риск!!
#
_CODE="comet"
_LOGFILE="/appdva/backup/log.`date +%y%m%d`"
_DEVICE="rmt0"
_INFORM="yes"
_TYPE="Full"
continue_prompt
#continue_prompt
#для вызова: continue_prompt "отображаемая строка"
default_answer
{
_STR=$1
_DEFAULT=$2
# проверка ввода корректных параметров
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
: ${_ANS:=$_DEFAULT]
if [ "$_ANS" = "" ]; then
case $_ANS in
Y) return 0 ;;
N) return 1 ;;
esac
fi # пользователь сделал выбор
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
}
Ниже приводится поток вывода при отображении настроек, заданных по умолчанию, причем пользователя запрашивают, желает ли он изменить эти настройки: