Решил сделать скрипт загрузки backup с проверкой статуса сервера.
Есть vps в облаке ovh.
Решили на ней поднять зеркало сайта одного, держать как резерв.
Так вот, структура такая скрипта.
С начало запускаем наше облако.
После уходим в сон на 40 минут, так как облако запускается долго (с полки запускается).
Следующий пункт, цикл сверки статуса сервера, если статус сервера в облаке ACTIVE, если иной статус то спим 10 минут и после заново проверка.
То происходит отправка письма, что backup начат и происходит загрузка по ssh backup.
В конце закрываем сервер (ложем его на полку, отключаем).
У скрипта так же есть функция счетчика проверок.
20 раз он может проверить статус и после закрыться, что бы не получился бесконечный, не убиваемый скрипт.
Интервал проверок зависит от sleep, в нашем случае это 10 минут.
i=0 i=$((i+1)) [ $i -eq 20 ] && exit
Сам скрипт.
#!/bin/sh STAT="/usr/local/bin/php /usr/local/www/serv.php --status" DT=`date +"%d-%m-%Y"` DT_YESTERDAY=`date -v-1d +"%d-%m-%Y"` # Запускаем с проверкой условия, если первый раз ошибка запуска, то делаем еще раз запуск. if /usr/local/bin/php /usr/local/www/serv.php --unshelve then /bin/sleep 3600 else /bin/echo "Повторно запускаем с полки впску, предыдущий раз не удачный, время ${TM}." | /usr/bin/mail -s "Повторно поднимаем с полки впску." bac@ya.local /bin/sleep 600 /usr/local/bin/php /usr/local/www/ovh/mir_ovh_serv.php --unshelve /bin/sleep 3600 fi i=0 # Сверка статуса сервер, если статус сервера ACTIVE то загружаем, в ином случае спим 10 минут и заново проверка. while [ "$($STAT)" != "ACTIVE" ] do i=$((i+1)) [ $i -eq 20 ] && /bin/echo "Облако OVH не запустилось, 20 попыток поднятия облака закончились, время ${TM}." | /usr/bin/mail -s "Проблема в поднятии облака OVH ${DT}." bac@ya.local && exit /bin/sleep 600 done /bin/echo "Начало загрузка backup на сервер, статус облако "$($STAT)"." | mail -s "Начало загрузка backup в облако." bac@ya.local /usr/bin/ssh -p 22 root@3.2.1.6 /bin/rm -rf /mnt/backup/fil/$DT_YESTERDAY /usr/bin/ssh -p 22 root@3.2.1.6 /bin/rm -rf /mnt/backup/sql/$DT_YESTERDAY /usr/bin/scp -r -P 22 /mnt/backup/fil/${DT} root@3.2.1.6:/mnt/backup/fil/ /usr/bin/scp -r -P 22 /mnt/backup/sql/${DT} root@3.2.1.6:/mnt/backup/sql/ MON_FIL=`/usr/bin/ssh -p 22 root@3.2.1.6 /usr/bin/du -sh /mnt/backup/fil/${DT} | /usr/bin/egrep -o "[0-9]{1,3}G"` MON_SQL=`/usr/bin/ssh -p 22 root@3.2.1.6 /usr/bin/du -sh /mnt/backup/sql/${DT} | /usr/bin/egrep -o "[0-9]{1,3}M"` /bin/echo "Конец загрузки backup на сервер ${DT}, статус облако "$($STAT)". Размер backupa файлов $MON_FIL, размер backup базы $MON_SQL." | /usr/bin/mail -s "Конец загрузки backup в облако ${DT}." bac@ya.local /usr/local/bin/php /usr/local/www/serv.php --shelve exit 0
Вот и весь скрипт backup с проверкой статуса сервера.
Backup на ftp.