70 0

Скрипт бэкапа WEB сервера

Рано или поздно каждому приходится писать свой велосипед, в общем так однажды пришёл и мой черёд. У меня был арендован VDS сервер, на нём крутился скромный сайт, по мере того как и сервер и сайт обрастали функционалом и дополнительными настройками я столкнулся с тем что называется “одно строишь другое ломаешь”, и порой очень не хватало откатить всё назад, или просто восстановить как было, это бы очень сэкономило время. Да и спится спокойнее когда знаешь – что бы не случилось с сервером по своей вине или чьей либо ещё ты всегда можешь восстановиться.
Готовых вариантов для себя в интернетах я не нашёл, но нашёл кучу примеров как народ для своих задач реализовывал свои скрипты, какую то часть их я тогда не совсем понял, другая оставляла желать лучшего. В общем нужно было пилить что-то своё.

Что бэкапить?

Так как это WEB сервер то нам обязательно нужна директория /var/www/ (в ней обыно хранят сайты, если что). Ещё нужны настройки сервера, если не занудствовать, они лежат в /etc/ (ну а если позанудствовать, то можно всего то пяток файлов оттуда отобрать). И конечно же база данных, в ней хранятся таблицы данных нашего сайта, ну или нескольких сайтов, главное знайте её нельзя просто взять и скопировать как файл, к ней нужно подключиться и экспортировать.
Итого:
– Файлы сайтов
– Файлы настроек сервера
– Базы данных

Как работает скрипт

Скрипт запускается на стороне сервера и собирает файлы веб сервера, файлы сайта и базы данных. Создаст файл бэкапа backup_2018-06-16.tar на сервере по адресу /home/backup/ если каталога нет, создаст и его.
Если в каталоге были старые бекапы то удалит их.
Во время работы попросит ввести пароль root от базы данных (MySQL или MariaDB) для её копирования.
Далее можно использовать либо сторонний софт такой как FileZilla, либо команду для копирования файла бэкапа к себе на домашний компьютер:
scp -p 22 user@your_web_ip:/home/backup/* /home/backup/
Где user – имя вашего пользователя на сервере, your_web_ip – ip адрес сервера, /home/buckup/ – каталог на домашней машине, предварительно убедитесь что он существует, или укажите другой.

Сам скрипт бэкапа
#!/bin/bash

# Вводим переменную nowadays она будет отображать в имени текущую дату
nowadays=$(date +"%Y-%m-%d")

# Создаём директорию для бэкапа
mkdir /home/backup/

# Чистим директорию, на тот случай если сегодня уже делался бэкап
rm -rf /home/backup/*

# Архивируем файлы сайтов и настроек сервера
tar cfvzp /home/backup/www.tgz /var/www/
tar cfvzp /home/backup/etc.tgz /etc/

# Архивируем базу данных
mysqldump -u root -p --all_databases | gzip > /home/backup/mysql.sql.gz

# Собираем вместе базу данных, файлы сайтов и настроек сервера
tar cfvP /home/backup/backup_$nowadays.tar /home/backup/*

# Удаляем лишние файлы
rm -rf /home/backup/*.tgz
rm -rf /home/backup/*.gz

# Информируем что всё готово
echo "Backup file created, see /home/backup/"
Скрипт восстановления
#!/bin/bash

# Распаковываем наш бэкап согласно путей
tar -xvf /home/backup/backup* -C /
tar -xzvf /home/backup/www.tgz -C /
tar -xzvf /home/backup/etc.tgz -C /
gunzip /home/backup/mysql.sql.gz

# Подключаемся к базе данных для восстановления
mysql -u root -p < /home/backup/mysql.sql;

# Чистим директорию куда копировали бэкап
rm -rf /home/backup/*

# Перезапускаем mysqld & apache2
/etc/init.d/mysql restart
/etc/init.d/apache2 restart

# Выдаём сообщение о завершении работ
echo "Web.Server restored"

Ссылка на мой GIT со скриптами, там также есть скрипт с инструкцией как делать бэкап и восстанавливаться в yuandex.disk
https://github.com/AnatoliiKyrylenko/Backup-Web-Server.git
Подписывайтесь и следите за обновлениями
https://github.com/AnatoliiKyrylenko

Скрипт не идеален, но со своей задачей справляется, надеюсь в будущем будет время его ещё доработать.

RELATED ARTICLES

LEAVE YOUR COMMENT

Your email address will not be published. Required fields are marked *




Скоро останутся лишь две группы работников: те, кто контролирует компьютеры, и те, кого контролируют компьютеры. Постарайтесь попасть в первую.

technicscoffee.com

Если вас как и меня интересуют: Linux, фантастика, технологии, игры и фильмы данных тематик, добро пожаловать на мой более развлекательный ресурс!

Категории