Бэкап сайта на WordPress и перенос на другой домен

Резервная копия сайта на WordPress включает в себя бэкап базы данных и бэкап файлов. А процесс восстановления сайта из резервной копии почти не отличается от его переноса на другой хостинг. Обе процедуры можно выполнить различными способами: через панель хостинга, SSH консоль сервера или плагины WordPress для резервного копирования и миграции.

Как сделать бэкап WordPress через панель хостинга

Панели управления хостингов разные, но принцип похожий:

Через файловый менеджер на хостинге запакуйте содержимое сайта в архив, а затем скачайте его к себе на компьютер.

Через PhpMyAdmin (или другую админку БД используемую на вашем хостинге) сделайте дамп базы данных. Для этого выберите нужную базу, перейдите на вкладку «Export» («Экспорт»), укажите способ экспорта «Quick» («Обычный»), нажмите «Go» («Вперёд») и сохраните SQL-файл к себе на компьютер.

В дополнение к указанным средствам, в большинстве случаев хостинг-провайдеры имеют свой интерфейс для управления резервными копиями.

Как сделать бэкап WordPress через консоль

Если сайт находится у вас на собственном сервере, подключитесь к нему по ssh.

Запакуйте файлы сайта в архив:

tar -czf /path/to/backups/wp_backup.tar.gz /path/to/wp_site_directory/

Хорошей мнемоникой для опции «-czf» является Create Zip File.

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

mysqldump -u username -p your_wp_db > /path/to/backups/you_wp_db.sql

Команды можно немного модифицировать, повесить на cron и тогда бэкап сайта будет автоматически создаваться по расписанию. Для этого создайте файл скрипта в своей домашней папке:

cd /home/username/scripts/
$ touch backup.script
$ chmod +x backup.script

Добавьте в него следующее содержание:

#!/bin/bash

# This script creates a compressed backup archive of the given directory and the given MySQL table.
# Feel free to use this script wherever you want, however you want. We produce open source, GPLv2 licensed stuff.

# Set the date format, filename and the directories where your backup files will be placed and which directory will be archived.
NOW=$(date +"%Y-%m-%d-%H%M")
FILE="example.org.$NOW.tar"
BACKUP_DIR="/home/username/backups"
WWW_DIR="/home/username/www/example.org/"

# MySQL database credentials
DB_USER="mysqluser"
DB_PASS="mysqlpass"
DB_NAME="example_org"
DB_FILE="example.org.$NOW.sql"

# Tar transforms for better archive structure.
WWW_TRANSFORM='s,^home/username/www/example.org,www,'
DB_TRANSFORM='s,^home/username/backups,database,'

# Create the archive and the MySQL dump
tar -cvf $BACKUP_DIR/$FILE --transform $WWW_TRANSFORM $WWW_DIR
mysqldump -u$DB_USER -p$DB_PASS -$DB_NAME > $BACKUP_DIR/$DB_FILE

# Append the dump to the archive, remove the dump and compress the whole archive.
tar --append --file=$BACKUP_DIR/$FILE --transform $DB_TRANSFORM $BACKUP_DIR/$DB_FILE
rm $BACKUP_DIR/$DB_FILE
gzip -9 $BACKUP_DIR/$FILE

Чтобы скрипт ежедневно запускался по расписанию, создайте файл для запуска в cron:

$ cd /etc/cron.daily/
$ sudo touch example_org_backup
$ sudo chmod +x example_org_backup

И добавьте в него путь к ранее созданному скрипту:

#!/bin/bash
/home/username/scripts/backup.script

Теперь на сервере в папке /home/username/backups ежедневно будут создаваться резервные копии вашего сайта, но вы можете изменить параметры.

Как восстановить бэкап WordPress

Чтобы развернуть резервную копию WordPress распакуйте архив с файлами бэкапа в папку сайта, а так же импортируйте SQL-дамп в базу данных. Сделать, как и в случае создания бэкапа это можно либо через панель управления хостингом, либо через SSH консоль сервера.

Распаковать файлы из консоли:

tar -xvzf /path/to/backups/wp_backup.tar.gz -C /path/to/wp_site_directory/

Импортировать дамп базы данных через консоль (для MySQL):

mysql -v -u username -p your_wp_db < /path/to/backups/you_wp_db.sql

Если из резервной копии сайт восстанавливается на то же место и тот же домен, где он находился до бэкапа, то после распаковки файлов и импорта базы данных сайт должен заработать.

Как перенести сайт WordPress на другой хостинг или сервер

Если сайт переносится на другой хостинг или сервер, действия по переносу аналогичны действиям по восстановлению сайта из бэкапа описанным в предыдущем разделе. Нужно распаковать файлы сайта в директорию на хостинге или сервере с привязанным доменом, а затем импортировать базу данных.

Затем необходимо в файле wp-config.php скорректировать доступы для подключения к новой базе данных.

/** Имя базы данных для WordPress */
define('DB_NAME', 'имя базы данных');
 
/** Имя пользователя MySQL */
define('DB_USER', 'пользователь базы данных');

/** Пароль к базе данных MySQL */
define('DB_PASSWORD', 'пароль');

/** Имя сервера MySQL */
define('DB_HOST', 'localhost');

Как перенести сайт WordPress на другой домен

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

После импорта необходимо изменить в базе данных старые URL-адреса на новые, которые могли присутствовать на страницах WordPress. Для этого в PhpMyAdmin или через консоль сервера выберите необходимую базу и по очереди выполните следующие SQL-запросы:

UPDATE wp_options SET option_value = REPLACE(option_value, 'http://olddomain.ru', 'http://newdomain.ru') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = REPLACE(guid, 'http://olddomain.ru','http://newdomain.ru');

UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://olddomain.ru', 'http://newdomain.ru');

где olddomain.ru — прежний домен сайта, а newdomain.ru — новый домен сайта. Если используется SSL-сертификат вместо http укажите https.

Примечание: В указанном запросе префикс таблицы может отличаться от wp_. Если это так, измените префикс таблицы на используемый вашим WordPress во всех трёх запросах выше.

Если лень выполнять запросы к базе данных, можно воспользоваться плагином Velvet Blues Update URLs. Он может найти в базе данных старые адреса и поменять их на новые.

Затем измените адрес сайта НастройкиОбщие.

То же самое можно сделать через конфигурационный файл wp-config.php с помощью констант WP_HOME и WP_SITEURL. Это может оказаться полезным, если сайт стал недоступен, например вы совершили ошибку при написании домена.

Плагины для резервного копирования и переноса сайта на WordPress

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

BackupWordPress

Самый простой, но самый полезный плагин. Умеет делать бэкапы файлов и базы данных вручную и по расписанию. Копии сохраняет локально на сервере, возможностей по передачи в бэкапов в облачные сервисы нет.

BackWPup

Имеет бесплатную и премиум версию. Но даже в бесплатной умеет делать резервные копии по расписанию в Dropbox, Amazon S3, FTP, а так же отправлять ссылки на бэкапы на email. Из настроек плагина в один клик можно сделать резервную копию базы данных не заходя в админку хостинга и PhpMyAdmin.

UpdraftPlus WordPress Backup

Функционал схож с предыдущим плагином, но поддерживает большее число облачных сервисов. Однако делает не цельный бекап, а создает отдельные архивы с папками plugins, themes, uploads и базой данных. Платная версия позволяет создавать инкрементальные бэкапы, выполнять миграцию на другой сервер. Подробности на сайте плагина.

Duplicator

В бесплатной версии не умеет создавать бэкапы по расписанию и отправлять их в облачные хранилища. Зато отлично подходит для переноса сайта на другой сервер или хостинг. Вместе с бэкапом создает файл installer.php, с помощью которого можно быстро и просто развернуть сайт на новом месте.

All in One WP Migration

Плагин позиционируется как инструмент для миграции WordPress сайтов, но может использоваться и для создания бэкапов. Он не умеет создавать бэкапы по расписанию, а облачные сервисы доступны в премиум версии. Зато при создании бэкапа можно на лету выполнить поиск и замену подстроки в базе данных, например заменить старые URL-адреса на новые при миграции на другой домен (подробнее в разделе Как перенести сайт WordPress на другой домен).

Чтобы перенести сайт на другой хостинг или сервер с помощью All in One WP Migration установите его, перейдите в панель управления плагином, после чего нажмите Экспорт и сохраните резервную копию в файл. Затем на новом хостинге установите чистый WordPress, установите плагин, перейдите в панель управления плагином, после чего нажмите Импорт и сохраните и восстановите сайт из сохраненной резервной копии.

VaultPress

Плагин от компании Automattic, создателей WordPress. Удобный мощный, функциональный. Бесплатной версии нет. Подробности на vaultpress.com.

Какой плагин выбрать, решать вам. Всё зависит требований, предпочтений и готовности раскошелится на премиум версию. И да, ничего не мешает использовать несколько из них одновременно. Например, на некоторых проектах я использую, BackupWordPress для создания локальных бэкапов, BackWPup — для отправки руками в Dropbox, а Duplicator — для переноса копий для разработки на другой сервер.

Ссылки

Резервное копирование WordPress
WordPress Backups
A Shell Script for a Complete WordPress Backup

На этом всё. Но вы можете помочь проекту. Обещаю писать больше полезных статей.

А если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.