Часто возникает ситуация, когда нужно сделать резервную копию или перенос Drupal сайта на другой хостинг. В этой статье я опишу несколько способов резервного копирования и восстановления Drupal сайтов. Способов на самом деле много, а с помощью этой статьи читатели смогут выбрать наиболее подходящий для них способ резервного копирования.
Эту статью, я постараюсь периодически дописывать, чтобы в результате получилась обзорная статья по методам резервного копирования и переносу Drupal сайтов.
Исходные данные:
- сайт расположен в /home/webmaster/domains/drupal-admin.ru/html
- база данных MySQL: sitedb (пользователь: user , пароль: password)
Способ 1. Используем стандартные средства ssh
Не самый простой способ резервного копирования, но позволяет достаточно быстро сделать архив сайта при невозможности использовать drush. Также этот способ позволяет очень гибко задать параметры архивации файлов, то есть, например, можно исключить некоторые подкаталоги из каталога сайта, добавив ключ архиватора tar. Это нужно в том случае, если, например, какой то подкаталог представляет из себя большое хранилище аудио или видео контента, размер которого может быть в сотни и тысячи раз больше самого сайта.
Этот способ можно широко использовать при написании bash скриптов.
Резервное копирование
Делаем бэкап базы данных
mysqldump -uuser -ppassword --default-character-set=UTF8 sitedb > sitedb_backup.sql
Архивируем бэкап MySQL и папку сайта
tar cvvzf backup_site.tar.gz html
tar cvvzf backup_sitedb.tar.gz sitedb_backup.sql
После этих манипуляций мы имеем архив сайта (backup_site.tar.gz) и архив базы данных (backup_sitedb.tar.gz)
Восстановление из резервной копии
Для восстановления из резервной копии достаточно разархивировать архивы
tar xvvzf backup_site.tar.gz
tar xvvzf backup_sitebd.tar.gz
Восстановить базу данных из файла на сервере
mysql -uuser -ppassword --default-character-set=UTF8 sitedb < sitedb_backup.sql
Способ 2. Используем drush
На мой взгляд самый простой способ резервного копирования, но работает только в свежих версиях drush.
Резервное копирование
Переходим в корневой каталог сайта и выполняем команду
drush archive-dump --destination=/home/webmaster/domains/drupal-admin.ru/backup/site_backup.tar.gz
После выполнения этой команды архив сайта будет создан в /home/webmaster/domains/drupal-admin.ru/backup/site_backup.tar.gz
Восстановление из резервной копии
Для восстановления выполняем следующую команду
drush archive-restore /home/webmaster/domains/drupal-admin.ru/backup/site_backup.tar.gz --destination=/home/webmaster/domains/drupal-admin.ru/html --db-su=root --db-su-pw=password --overwrite
Стоит отметить, что в последней команде в качестве имени пользователя и пароля к БД были заданы root и password — это сделано для того, чтобы drush смог создать новую базу. Также можно удалить имеющуюся базу sitedb и тогда можно восстанавливать c теми же именем пользователя и паролем, которые были указаны в settings.php архивируемого сайта.
Способ 3. Используем модуль Backup and Migrate в связке с Backup and Migrate Files
Отличный модуль, позволяющий быстро сделать архив сайта и базы данных Drupal, при этом не нужно подключаться по ssh. Правда первоначальная установка все таки потребует подключения в терминал.
Для начала работы необходимо установить данные модули с официального сайта:
Backup and Migrate
Backup and Migrate Files
Чтобы заработал модуль Backup and Migrate Files необходимо:
- Скачать с сайта архив
- Разархивировать и скопировать файл Tar.php в папку модуля backup_migrate_files/includes
Далее на странице конфигурации модуля admin/config/system/backup_migrate можно выбрать что и куда архивировать.
Перенос Drupal сайтов на другой хостинг
Для осуществления переноса сайта выбираем один из вышеприведенных методов резервного копирования и выполняем следующие действия:
- Создаем резервную копию Drupal сайта.
- Выполняем перенос архива сайта и базы данных на новый хостинг. Для этого можно использовать команды scp, rsync, или просто через ftp.
- Восстанавливаем сайт из резервной копии.
- Изменяем записи на DNS сервере, указав новый IP адрес сервер нашего сайта.
После обновления DNS серверов мы получим полностью рабочую версию нашего сайта на новом хостинге. На этом перенос Drupal сайта можно считать оконченным.