Здравствуйте, уважаемые читатели. Сегодня статья на тему: "Бэкап и восстановление сайта в Linux". При наличии веб-сайта на сервере, резервное копирование, это одна из важнейших функций, которую необходимо настроить.  Случится может всякое, а потерять «всё нажитое непосильным трудом», перспектива не очень приятная.

Резервное копирование сайта – это создание заархивированной копии файлов, и дампа базы данных сайта, в специально выделенной директории, на том же или удалённом сервере.

Восстановление сайта из резервной копии – это замена файлов, и содержимого базы данных сайта, на предварительно сохранённые копии. После процедуры восстановления, всё содержимое сайта, откатывается на момент создания резервной копии, из которой произведено восстановление.

Чтобы всё было наглядно, в качестве «жертвы» резервного копирования и восстановления, будем использовать веб-приложение OwnCloud, установку которого мы рассматривали в прошлой статье.

Создание Бэкапа файлов сайта

  • Чтобы не было путаницы, можно создать инфраструктуру, в которую будет производится резервное копирование.
  • Создаём директорию /rezerv, а в ней отдельные директории для резервных копий файлов сайта, и базы данных.
  • Создаём директории site  и baza.
# mkdir -p /rezerv/site
# mkdir -p /rezerv/baza
  • Для создания бэкапа файлов сайта, мы будем использовать утилиту tar.
  • Нам нужно создать архив файлов сайта, с понятным для нас названием, чтобы мы в итоге могли понять, что это за копия, и когда она создана.

Команда будет выглядеть так:

# tar -czvf /rezerv/site/backup-`date +"%Y-%m-%d_%H-%M"`.tar.gz -C /var/www/html/ owncloud

--- Будет создана заархивированная копия директории owncloud, находящейся в /var/www/html/.

--- Созданный архив будет расположен в директории /rezerv/site/.

--- Архив будет иметь название вида: backup-дата_время создания.tar.gz

  • Отправляем команду в консоль, и проверяем результат.
  • В директории /rezerv/site/ появился архив, с настроенным нами названием.
бэкап файлов сайта
  • Задача выполнена.

Создание Бэкапа базы данных сайта

  • Теперь займёмся созданием резервной копии базы данных, по аналогии с резервной копией файлов сайта.
  • Будем использовать утилиту mysqldump.

Команда будет выглядеть так:

# mysqldump -u oblako -p123 oblako | gzip -c > /rezerv/baza/mysql-`date +"%Y-%m-%d_%H-%M"`.sql.gz

--- Будет создан дамп базы данных oblako, от имени пользователя oblako, с паролем 123.

--- Дамп будет заархивирован и расположен в директории /rezerv/baza/.

--- Архив будет иметь название вида: mysql -дата и время создания. sql.gz

  • Отправляем команду в консоль, и проверяем результат.
бэкап базы данных сайта
  • В результате получаем архив с дампом базы данных, и задуманным нами названием.
  • Как видите сделать бэкап сайта не так уж и сложно. Кроме того, не требуется каких-то дополнительных компонентов. Всё что нужно, уже есть в системе.

Настройка автоматического бэкапа сайта

  • Мы рассмотрели создание бэкапа сайта в ручную, но есть способ автоматизировать этот процесс.
  • Для организации автоматического бэкапа сайта, мы будем использовать системный планировщик заданий cron.
  • Для добавления задания в cron на CentOS, нам нужно открыть файл /etc/crontab.
  • В файле crontab, есть комментарии по правильной настройке выполнения заданий.
файл /etc/crontab
  • Задание на выполнение ежедневного бэкапа файлов сайта в 2:30 ночи, с настройками использованными нами выше, будет выглядеть так:

#Бэкап сайта
30 2 * * * root /bin/tar -czf /rezerv/site/backup-`date +\%Y-\%m-\%d_\%H-\%M`.tar.gz -C /var/www/html/ owncloud

  • А задание на выполнение ежедневного бэкапа базы данных, так же в 2:30 ночи, с настройками использованными нами выше , будет выглядеть так:

#Бэкап базы
30 2 * * * root /bin/mysqldump -u oblako -p123 oblako | /bin/gzip -c > /rezerv/baza/mysql-`date +\%Y-\%m-\%d_\%H-\%M`.sql.gz

  • Добавляем оба задания в файл crontab, и сохраняем изменения.
задания на автоматический бэкап сайта

Восстановление файлов сайта из бэкапа.

  • Заходим в директорию с резервными копиями файлов сайта.
# cd /rezerv/site
  • Просматриваем содержимое.
# ls
  • Нас интересует точное название архива, из которого мы хотим произвести восстановление.
  • Разархивируем нужный архив.
# tar -xzvf backup-2019-11-11_14-52.tar.gz
  • В директории /rezerv/site, появится папка owncloud с файлами, которые и нужно восстановить.
  • Следующая команда произведёт замену файлов в корневой директории сайта, файлами из разархивированного бэкапа.
# \cp -fR /rezerv/site/owncloud/* /var/www/html/owncloud
  • Восстановление файлов сайта из бэкапа завершено.

Восстановление базы данных сайта из бэкапа.

  • После восстановления файлов сайта, произведём восстановление базы данных из бэкапа.
  • Заходим в директорию с резервными копиями базы данных.
# cd /rezerv/baza
  • Так же как и в случае с бэкапом файлов, нас интересует точное название нужного нам архива.
# ls
  • Разархивируем необходимый архив.
# gunzip mysql-2019-11-11_14-52.sql.gz
  • Подключаемся к базе данных под необходимыми правами.
# mysql --host=localhost --user=oblako --password=123 oblako;
  • Производим восстановление базы данных:
source /rezerv/baza/mysql-2019-11-11_14-52.sql
  • И отключаемся от базы данных:
quit;
  • Восстановление базы данных сайта из бэкапа завершено.

Сегодня мы рассмотрели тему: "Бэкап и восстановление сайта в Linux". Научились делать бэкапы, и производить восстановление. Смотрите также видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Бэкап и восстановление сайта в Linux":