если запускать из crontab эта
########################################################## #!/bin/sh
DIR_ARC=/mnt/db DEVICE_ARC=/dev/hdd1 LINTER_BIN=/linter/bin . $LINTER_BIN/constants . $LINTER_BIN/private_passwd
# если запускать из crontab эта переменная не установлена PATH=/bin:/usr/bin:/usr/local/bin:$LINTER_BIN export PATH
#монтируем устройство архивации #(можно опустить если подмонтировано постоянно) mount $DEVICE_ARC if [ $? -ne 0 ]; then echo "Error mount $DEVICE_ARC" exit 1 fi
#проверяем наличие каталога if [ ! -d $DIR_ARC ]; then echo "Arcive directory not exist" exit 1 fi
#создаем архив lhb s -u $USER'/'$PASSWORD -f $DIR_ARC/db.new
#Проверяем окончание архивации if [ $? -ne 0 ]; then echo "Error create arcive" exit 1 fi
#Переименовываем более старые архивы, храним 5 последних PREV="" for i in 4 3 2 1 lhb ; do if [ "$PREV"AA = AA ]; then rm -f $DIR_ARC/db.$i else if [ -f $DIR_ARC/db.$i ]; then mv -f $DIR_ARC/db.$i $DIR_ARC/db.$PREV fi fi PREV=$i done
#переименовываем новый архив mv -f $DIR_ARC/db.new $DIR_ARC/db.lhb
#отмонтируем устройство архивирования umount $DEVICE_ARC if [ $? -ne 0 ]; then echo "Error umount $DEVICE_ARC" exit 1 fi ###########################################################
В итоге мы получили результат полностью эквивалентный приведенному выше примеру за исключением того, что база данных не должна останавливаться в процессе архивирования данных.