Резервное копирование сайта Drupal

Опубликовано: 31.05.2020
Автор: Виталий Бочкарев

Для предотвращения потери сайта в результате собственных ошибок или взлома со стороны злоумышленников необходимо делать резервное копирование сайта.

Я рекомендую делать копии сайта и самого сервера по следующему принципу:

  • Ежедневно внутри операционной системы виртуальной машины - данный тип бэкапа можно использовать для оперативного восстановления случайно удаленных файлов или настроек.
  • Еженедельно вне операционной системы - данный тип бэкапа можно использовать для восстановления сломанного сервера целиком в случае поломки операционной системы или всего сервера.
  • Ежемесячно на внешний ресурс - данный тип резервной копии используется в случае потери доступа к хостингу.

     

Чтобы делать резервное копирование внутри операционной системы, необходимо выполнить следующие шаги:

Создать папку для бэкапа и скрипт бэкапа в ней:

sudo mkdir /var/www/drupal-backup
sudo chown -R webuser:webuser /var/www/drupal-backup
touch /var/www/drupal-backup/site-backup.sh
vi /var/www/drupal-backup/site-backup.sh

Вставить в редакторе следующий скрипт:

#!/bin/bash
/usr/bin/mysqldump -udbuser -pPa$$word drupal > /var/www/drupal-backup/$(date +%Y-%m-%d)_database.db
tar cvzfP  /var/www/drupal-backup/$(date +%Y%m%d)_site.tar.gz /var/www/drupal
find /var/www/drupal-backup/*.db -mtime +7 -exec rm {} \;
find /var/www/drupal-backup/*.gz -mtime +7 -exec rm {} \;

Скрипт бэкапа выполняет следующие операции:

  1. Создание дампа базы данных сайта.
  2. Архивирование контента сайта.
  3. Удаление старых дампов баз данных возрастом более 7 дней.
  4. Удаление старых архивов контента сайта возрастом более 7 дней.

Разрешить исполнять скрипт бэкапа и открыть расписание планироващика cron:

chmod a+x /var/www/drupal-backup/site-backup.sh
sudo crontab -e

Поставить скрипт бэкапа в расписание cron, чтобы он запускался ежедневно в 5 утра:

0 5 * * * /var/www/drupal-backup/site-backup.sh

В результате работы данного сценария на диске сервера, где расположен веб-сайт, будет создана папка drupal-backup с ежедневными бэкапами базы данных дата_database.db и контента сайта дата_site.tar.gz, которые можно использовать для восстановления сайта.

Необходимо учесть, что сценарий хранит 7 копий сайта, поэтому надо предусмотреть необходимое свободное место на диске, чтобы резервные копии не заполнили системный диск сервера и не остановили его работу.

 

Чтобы делать резервное копирование вне операционной системы сервера, необходимо делать снимок виртуальной машины, содержащей сайт и его резервные копии, 1 раз в неделю и хранить это снимок в течение месяца или дольше. Для этого надо воспользоваться настройками хостинга или облачного сервиса, чтобы выставить нужные интервалы резервного копирования.