Backup с проверкой статуса сервера

Дата | 27.03.2021

Backup с проверкой статуса сервера
Решил сделать скрипт загрузки 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *