Робимо backup 1

І так кожен добросовісний адміністратор повинен робити backup даних, в моєму випадку сервера на безе * nix систем. Після використання пару місяців bacula, зрозумів що краще само-писаних скриптів нічого немає. Коротко опишу алгоритм створення резервних копій який я іспользую.Буду дуже радий отримати рекомендації ну або виправлення до скриптів. тому як скрипти працюють, але бачу, що поки вони далекі від досконалості.

Що маю: 5 серверів 2 з яких хостинг, решта під vps, ну і звичайно ж це сховище, або як я його кличу внутрішній сервер (він знаходиться дуже далеко від місця де стоять сервера).

З метою більшої безпеки вирішив, що з хостингу потрібно робити backup кожен день і зберігати тиждень. З vps вирішено було робити backup 3 рази в тиждень. І раз в 2 місяці останній backup пишеться на болванки (ну все може бути: сонячні спалахи магнітні бурі і тп ...;)). Спочатку хотілося все настройки тощо робити централізовано. але як виявилося на ділі, що це, не зовсім зручно конфіги стали громіздкими і заплутаними (можливо в подальшому зміню свою думку після того як перегляну розташування конфиг файлів і їх вмісту) .Решено було розбити задачу backup на менші скрипти, кожен з яких виконує свою роль і розташований на тому сервері з якого робиться backup, що в свою чергу дало можливість при підключенні до сервера конкретному мати папку з назвою backup в якій лежить скрипт відповідає за backup конкретного сервера. Власне перший скрипт який привожу тут це той, який відповідає за формування і закачування. а також звіт на mail.

# Posted Khizhny Vladislav [email protected]

# Put this script on the server on which the backup made

# If you use a script, use the authorization to ssh key to the remote server

DAY = $ (date + ".-% m-% y") #receive date

REMOTESERVER = "[email protected]" #address to connect remote serverн

DIRTOBACKUP = "/ home / blabla / backupus1" #directory from backup is done

DIRFROMBACKUP = "/ var / www /" #directory where the backup is done

EMAILD = "[email protected]" #email to send mail

# Get all databases name

DBS = "$ ($ MYSQL -u $ MUSER -h $ MHOST -p $ MPASS -Bse 'show databases')"

$ MYSQLDUMP -u $ MUSER -h $ MHOST -p $ MPASS $ db | $ GZIP -9> $ FILE

#### upload files to server ####

rsync -azo $ DIRFROMBACKUP $ REMOTESERVER: $ DIRTOBACKUP / $ HOSTNAME- $ DAY

if [ "$?" == "0"]; then
T = / tmp / backup.good
echo "Date: $ (date)"> $ T
echo "Hostname: $ (hostname)" >> $ T
echo "Backup ready" >> $ T
mail -s "BACKUP READY" "$ EMAILD" <$T
rm -f $ T
rm -r $ BACKUP
else
T = / tmp / backup.fail
echo "Date: $ (date)"> $ T
echo "Hostname: $ (hostname)" >> $ T
echo "$?" >> $ T
echo "Backup fails" >> $ T
mail -s "BACKUP FAILD" "$ EMAILD" <$T
rm -f $ T
rm -r $ BACKUP
fi

Вообщем скрипт отримує дані які потрібно ввести спочатку. І потім робиться backup mysql всіх баз, далі rsync все закачує (доступ по ключу здійснюється), перевіряється код який повертає rsync і висилається на mail лист з результатами або все успішно, або отримуємо mail що все погано, а так же код помилки яку повернув rsync щоб можна було в google знайти відповідь по цій помилку. У лист так само включено з якого сервера відповідь, дата.Жду ваших рекомендацій, побажань)

У другій частині буде описано скрипт який вже займається безпосередньо виконанням архівації пошуком старих файлів і видаленням їх.

Схожі статті

Copyright © 2024