общая цель: копировать файлы при наличии сетевого диска, если диск отсутствует sleep на 30 min произвести копирование, в случае прецедента снова sleep 30 min, и повторить, после 2х неудачных запусков отправить почту.
#!/bin/bash
storage=/mnt/nfs_disk
exptemp=/opt/local
file=/mnt/nfs_disk/remotefile
logexp=/var/log/backup.log
function copyfile {
echo "`date +%H:%M:%S` start copy db dump's from $exptemp to $storage" >> $logexp
cp $exptemp/* $storage && rm -rf $exptemp/*.dmp
echo "`date +%H:%M:%S` finish copy db dump's from $exptemp to $storage done!" >> $logexp
}
if [[ -e $file ]]; then
copyfile
mail -s "send mail copy done!.."
else
sleep 1800
????copyfile
sleep 1800
????copyfile
#elsif
mail -s "send mail copy cancel!.."
fi
Т.к в знаниях большой пробел в голову приходит такая схема: если файл на сетевом диске доступен запустить функцию и произвести копирование. Иначе запустить повторно copyfile через 30 мин. Но в этом случае при успешном выполнении будет еще один запуск через 30 мин, а мне этого не надо, т.е надо писать цикл с условием. Как это сделать нет понимания. Прошу просветить.