Восстановление сайта из резервной копии: WordPress, Битрикс, PHP
Содержание · 9

Чтобы восстановить сайт из резервной копии, нужны две части: файлы и дамп базы данных, сделанные на один момент. Порядок такой: проверить копию, развернуть её на тестовом адресе, поправить настройки подключения к базе и адресу сайта, проверить заказы и формы, только потом переключать боевой домен. Если сайт взломан, копию выбирайте до момента заражения, иначе вернёте вирус вместе с сайтом.
Что должно быть в копии
| Часть | Что внутри | Без неё |
|---|---|---|
| Файлы сайта | Код, темы, плагины, загрузки | Нет оформления и картинок |
| База данных | Страницы, заказы, пользователи, настройки | Пустой сайт или установщик |
| Конфигурация | wp-config.php, .env, .htaccess, настройки веб-сервера | Нет связи с базой, неверные ссылки |
| Версия PHP и расширения | Параметры хостинга | Белый экран при другой версии |
| Секреты и ключи | Платёжные ключи, токены, почта | Не работают оплата и письма |
Копия, лежащая рядом с сайтом на том же сервере, не спасёт от потери самого сервера, от взлома и от ошибки хостера. Правила хранения мы разбирали в статьях про настройку резервных копий и про цепочку полных и дифференциальных архивов.
Шаг 0. Прежде чем восстанавливать
- Определите причину. Сломалось обновление, взломали, удалил хостер, ошибка в базе? От этого зависит, какая точка подходит.
- Выберите точку копии. При взломе — до даты первого признака. Подробности в статье после взлома: какую копию выбрать.
- Зафиксируйте текущее состояние. Даже сломанный сайт стоит скопировать: в нём могут быть заказы, которых нет в копии.
- Остановите запись. Включите страницу обслуживания, чтобы пока идёт восстановление, новые заказы не терялись.
WordPress
- Создайте чистую базу и пользователя (или очистите существующую, предварительно сохранив её дамп).
- Загрузите файлы в каталог сайта и проверьте права.
- Импортируйте дамп: через phpMyAdmin или командой
mysql -u пользователь -p база < dump.sql. Для больших дампов командная строка надёжнее. - Откройте
wp-config.phpи проверьтеDB_NAME,DB_USER,DB_PASSWORD,DB_HOSTи префикс таблиц$table_prefix: он должен совпасть с префиксом в дампе. - Если адрес сайта изменился (перенос на другой домен или тестовый адрес), замените его в базе:
wp search-replace 'старый-адрес' 'новый-адрес' --all-tables. Прямая замена текстом ломает сериализованные данные, поэтому используйте именно эту команду или плагин. - Сбросьте кэш и обновите постоянные ссылки («Настройки → Постоянные ссылки → Сохранить»).
- Проверьте
wp core verify-checksums, а вwp-content/uploads— отсутствие посторонних.php.
1С-Битрикс
Резервная копия создаётся штатным инструментом («Настройки → Инструменты → Резервное копирование») и разворачивается скриптом restore.php, который кладут в корень сайта вместе с архивами копии. Копия состоит из нескольких частей: переносите их все, не только первый файл. Точные шаги зависят от версии продукта и редакции, поэтому ориентируйтесь на официальные уроки на dev.1c-bitrix.ru.
- Версия PHP и модули на новом сервере должны подходить версии Битрикса: проверьте тестом окружения до начала;
- у каталога
bitrix/php_interfaceиbitrix/.settings.phpдолжны быть верные параметры подключения к базе; - после восстановления проверьте лицензию, почтовые события и обмен с 1С;
- если сайт при восстановлении сообщает об изменившемся IP клиента, это защита сессии: действуйте по инструкции вашей версии, а не отключайте проверки наугад.
Если лицензия закончилась или привязка изменилась, смотрите что будет с сайтом при окончании лицензии Битрикс.
Сайт на PHP + MySQL без CMS
- Разверните файлы на сервере с подходящей версией PHP.
- Создайте базу и импортируйте дамп.
- Поправьте параметры подключения в конфигурации (
config.php,.env). - Проверьте кодировку базы и сравнение (collation): при ошибках «Unknown collation» поможет разбор переноса MySQL.
- Проверьте права на каталоги загрузок и кэша, задания cron и почту.
Типичные ошибки и что они значат
| Симптом | Вероятная причина | Что проверить |
|---|---|---|
| Белый экран | Другая версия PHP, отсутствует расширение | Журнал ошибок PHP |
| Установщик вместо сайта | Не подключилась база или пустая база | Параметры подключения, импорт |
| Сайт открывается, стили не грузятся | Неверный адрес сайта или кэш | siteurl, кэш, .htaccess |
| Нет картинок | Не перенесён каталог загрузок или права | uploads, права |
| Заказы за последние часы пропали | Копия старше последних заказов | Дамп текущей базы, выгрузка заказов |
| Не работает оплата | Тестовые или старые ключи | Ключи, адреса уведомлений |
| Письма не уходят | Другие настройки SMTP | SMTP |
Как не потерять заказы
Самый болезненный случай — копия вчерашняя, а сайт принимал заказы весь день. Перед восстановлением выгрузите свежие заказы, заявки и пользователей из текущей базы (в CSV или отдельным дампом нужных таблиц) и после восстановления внесите их обратно или запишите вручную. Если база повреждена, сначала посмотрите материал про повреждённую базу данных.
Чек-лист перед переключением боевого домена
- Главная, каталог, карточка товара и поиск работают.
- Форма заявки и оплата проходят тестовое действие, письма доходят.
- Админка открывается, администраторы только свои, пароли сменены.
- В файлах нет посторонних скриптов.
- SSL-сертификат выдан на нужный домен.
- Новая резервная копия снята сразу после успешного восстановления.
Если копии нет или она неполная, пригодится материал про удалённый хостером сайт без копии. Проверку восстановления и регулярные пробные развёртывания мы выполняем в рамках поддержки сайта.
Вопросы и ответы
Как восстановить сайт из бэкапа?
Разверните файлы и дамп базы на тестовом адресе, поправьте подключение к базе и адрес сайта, проверьте заказы и формы, а затем переключите боевой домен.
Что делать, если нет дампа базы, только файлы?
Без базы восстановится только оформление и код. Страницы, заказы и пользователи лежат в базе. Спросите у хостера, делает ли он собственные копии баз.
Почему после восстановления открывается установщик WordPress?
Чаще всего не подключилась база: неверные параметры в wp-config.php, не совпал префикс таблиц или дамп импортирован не полностью.
Можно ли восстановить сайт после взлома из любой копии?
Нет. Копия должна быть сделана до заражения, иначе вирус вернётся вместе с сайтом. После восстановления меняют пароли и закрывают дыру, через которую зашли.
Как часто нужно проверять копии?
Регулярно разворачивайте их на тестовом адресе: так вы узнаете о проблемах до аварии, а не во время неё.
Читайте также
После взлома сайта: какую точку резервной копии рассматривать для восстановления
БезопасностьPHP2Shell на хостинге и в FASTPANEL, ISPmanager: что сделать владельцу WordPress и 1С-Битрикс
ПоддержкаПоддержка сайта на 1С-Битрикс: что входит и регламент работ
БезопасностьРезервные коды 2FA: как хранить и проверить восстановление
БезопасностьНевидимые резервные копии: что это и как спрятать бэкап
БезопасностьРезервные копии: как настроить, чтобы данные не потерялись