Хостинг

Как перенести сайт на другой хостинг без потери данных

Пошаговый перенос файлов и базы: подготовка, проверка новой площадки, финальная синхронизация, DNS, почта, HTTPS и план возврата.

Защищённая передача данных между двумя серверами

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

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

В руководстве разберём перенос с сохранением домена. Примеры используют условный адрес example.com: заменяйте его своим доменом. Они не требуют переносить регистрацию домена к новому провайдеру.

Что нужно перенести кроме файлов

Начните с инвентаризации. Частая причина неудачного переезда — сервис, о существовании которого вспомнили уже после отключения старого аккаунта. Например, сайт открывается, но перестали отправляться уведомления, потому что SMTP-пароль остался только в прежней панели.

Объект

Где проверить

Что сохранить

Файлы сайта

Файловый менеджер, репозиторий, SSH

Код, загрузки, скрытые конфигурационные файлы

Базы данных

Панель MySQL/PostgreSQL, настройки CMS

Экспорт, имя базы, кодировка, версия СУБД

Конфигурация

Переменные окружения, конфигурационные файлы

Настройки домена, путей, кеша и подключений

Почта

Раздел почты и DNS

Ящики, MX, SPF, DKIM, DMARC

Планировщик

Cron, настройки CMS

Команды, время запуска, используемый PHP

Интеграции

Кабинеты внешних систем

Webhook-адреса, разрешённые IP, ключи доступа

HTTPS

Панель сертификатов, прокси

Список доменов, способ выпуска и продления

Резервные копии

Система бэкапов

Свежая независимая копия и способ восстановления

Не публикуйте собранные пароли и ключи в общем документе. Для команды удобнее использовать менеджер секретов с индивидуальными доступами. Передавать архив сайта неизвестному исполнителю тоже нельзя без проверки: внутри могут находиться данные клиентов и рабочие учётные записи.

Проверьте совместимость нового хостинга

Новый тариф должен подходить приложению до начала копирования. Уточните версии PHP, СУБД и расширений, доступ к SSH, ограничения процессов, размер загрузки и возможность запускать фоновые задания. Для некоторых приложений нужен VPS, а обычный виртуальный хостинг не предоставляет нужного окружения.

Сравните версии PHP у веб-сервера и в командной строке. Команда php -v показывает CLI-интерпретатор; сайт может обслуживаться другой версией. Подробно выбор окружения разобран в статье как выбрать версию PHP для сайта, а требования к размещению — в руководстве по PHP-хостингу.

Не совмещайте переезд с обновлением CMS, темы, всех расширений и major-версии СУБД. Чем больше независимых изменений, тем сложнее найти причину ошибки и вернуться к рабочему состоянию. Сначала воспроизведите исправный сайт на новом месте, затем планируйте отдельное обновление.

Проверьте дисковую квоту с учётом временных файлов. На новой площадке одновременно могут понадобиться архив, распакованный сайт и SQL-дамп. Оценить это поможет статья сколько места на диске нужно сайту.

Выберите окно переноса и определите допустимую паузу

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

Для небольшого блога обычно достаточно временно закрыть комментарии и редакторскую публикацию. Для магазина нужно учесть корзины, оформление заказов, оплату, складские обмены и webhook-уведомления. Для личного кабинета — любые операции, изменяющие пользовательские данные.

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

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

Шаг 1. Сохраните DNS-зону и снизьте TTL заранее

Запишите текущие A, AAAA, CNAME, MX и TXT-записи, а также используемые NS-серверы. Домен может использовать внешнюю почту, сервис подтверждения владения или отдельный поддомен приложения. Копировать только запись основного сайта недостаточно при смене всей зоны.

Если планируете уменьшить TTL записи, сделайте это заранее: старое значение должно успеть истечь у кеширующих резолверов. Изменение TTL за минуту до переноса не очистит уже сохранённые ответы.

При сохранении DNS-провайдера обычно достаточно заменить адрес сайта в A-записи и при необходимости AAAA. Менять NS ради самого факта переезда не обязательно. Подробности подключения и проверки адресов есть в статье как привязать домен к хостингу.

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

Шаг 2. Сделайте независимую резервную копию

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

Для WordPress официальная документация по резервному копированию отдельно рассматривает файлы и базу. Тот же принцип применим к другим CMS: без одного из компонентов восстановление часто оказывается неполным.

На Linux содержимое архива можно проверить без распаковки:

tar -tzf site-backup.tar.gz | head -n 30
sha256sum site-backup.tar.gz

Контрольная сумма помогает обнаружить изменение файла при передаче, но не доказывает полноту копии. Настоящая проверка — восстановление в отдельное окружение и запуск сайта. Регулярный процесс рассмотрен в руководстве как настроить ежедневные резервные копии.

Не храните архив с конфигурацией и паролями в доступной посетителям папке. Название вроде backup-old-final.zip не защищает файл от скачивания.

Шаг 3. Создайте сайт и базу на новой площадке

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

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

Подготовьте корневой каталог. Убедитесь, что домен указывает на правильную папку, а не на соседний проект или общий домашний каталог. Для приложений с каталогом public корнем веб-сайта должен быть именно публичный каталог, а не весь проект с конфигурацией и зависимостями.

Проверьте ограничения тарифа до загрузки: максимальный размер файла в менеджере, допустимую длительность операции и доступность распаковки. Большие переносы лучше делать по SFTP или SSH, если провайдер предоставляет такую возможность.

Шаг 4. Скопируйте файлы

Для небольшого проекта подойдёт архив: загрузите, распакуйте и проверьте структуру. Частая ошибка — получить лишнюю вложенность site/site/public_html, из-за которой сервер показывает пустую страницу или список файлов.

При наличии SSH можно использовать rsync. Пример ниже копирует содержимое каталога без удаления файлов на приёмнике:

rsync -avz --dry-run /home/account/site/ user@new-server:/home/account/site/
rsync -avz /home/account/site/ user@new-server:/home/account/site/

Сначала просмотрите пробный запуск. Завершающий слеш у исходного каталога означает перенос его содержимого. Адрес, пользователя и пути замените реальными. Опцию --delete в первое копирование не добавляйте: ошибка в пути может удалить нужные данные на новой стороне.

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

После переноса проверьте владельца файлов и права. Универсальное chmod -R 777 не исправляет конфигурацию безопасно. Права должны позволять приложению записывать только в предназначенные для этого каталоги, а секретные файлы не должны отдаваться веб-сервером.

Шаг 5. Импортируйте базу данных

Для MySQL пример экспорта выглядит так:

mysqldump --single-transaction --quick --no-tablespaces \
  -u db_user -p db_name > site.sql

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

Импорт выполняется в заранее созданную пустую базу:

mysql -u new_db_user -p new_db_name < site.sql

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

Если используется MariaDB или другая СУБД, выбирайте соответствующие инструменты и совместимый формат. Важные различия экспорта описаны в руководстве MySQL по mysqldump.

Шаг 6. Обновите настройки приложения

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

Если домен сохраняется, массовая замена URL в базе чаще всего не нужна. Менять следует только значения, которые действительно привязаны к старому пути или окружению. Для WordPress обычная текстовая замена в SQL опасна для сериализованных данных; используйте штатный инструмент с поддержкой такого формата и пробным запуском.

Разверните SSL-сертификат для боевого имени. Если нужно выпустить его до смены A-записи, рассмотрите DNS-проверку владения или возможность панели. Проверять HTTPS через отключение проверки сертификата недостаточно: посетитель будет использовать обычную строгую проверку.

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

Шаг 7. Проверьте новый сервер до смены DNS

Открытие IP-адреса не проверяет домен: виртуальный хост и сертификат выбираются с учётом имени. Для точной проверки можно использовать локальный файл hosts или curl --resolve:

curl --resolve example.com:443:203.0.113.20 \
  -sS -o /dev/null -w '%{http_code}\n' https://example.com/

203.0.113.20 — адрес из диапазона для документации; укажите реальный IP новой площадки. Команда направляет этот запрос на новый сервер, сохраняя доменное имя и TLS-проверку.

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

Шаг 8. Выполните финальную синхронизацию

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

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

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

Статический баннер «идёт перенос» не останавливает изменения сам по себе. Нужно действительно заблокировать операции записи и фоновые интеграции. Иначе часть данных останется на старой стороне уже после финальной выгрузки.

Шаг 9. Переключите домен

Измените адреса сайта в действующей DNS-зоне. Не трогайте MX и другие записи, которые не относятся к переносу веб-части. Если меняете NS, сначала полностью подготовьте новую зону и проверьте её содержимое.

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

В зависимости от архитектуры старую площадку оставляют в обслуживании или организуют корректное перенаправление запросов на новый источник. Схему выбирают заранее и проверяют, включая TLS, заголовки и ограничения доступа. Самовольный редирект на IP-адрес обычно только создаёт новые проблемы.

Шаг 10. Проведите проверку после переключения

Проверьте сайт с обычного подключения и с другой сети. Убедитесь, что DNS возвращает новый адрес, HTTPS работает без предупреждений, а журналы нового сервера получают запросы.

Проверьте не только HTTP 200. Страница может отвечать успешно и при этом показывать ошибку приложения внутри. Откройте реальные карточки, поиск, личный кабинет и формы. Убедитесь, что изображения и документы доступны, а письма доставляются.

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

Не удаляйте старый аккаунт до завершения приёмки и проверки независимой копии. Срок переходного хранения зависит от TTL, интенсивности изменений и требований проекта. Важнее наличие проверенных критериев завершения, чем произвольное обещание «всё переедет за час».

Как сохранить адреса страниц и поисковую видимость

При переезде с прежним доменом сохраняйте структуру URL. Проверьте, что внутренние страницы отвечают по тем же адресам, canonical не указывает на тестовый домен, а robots.txt и метатеги не содержат случайный запрет индексации, оставшийся от проверки.

Если адрес действительно изменился, настройте адресный постоянный редирект на соответствующую новую страницу. Не отправляйте все старые URL на главную: посетитель теряет нужный материал, а поисковая система — соответствие страниц.

Сверьте карту сайта, редиректы www и HTTP, коды ошибок для отсутствующих страниц. Технический перенос сам по себе не гарантирует неизменность поисковых позиций, но сохранение содержимого, адресов и доступности уменьшает число лишних изменений.

На закрытом проекте сохраняйте ограничения доступа и индексации до осознанного запуска. Переезд не является поводом автоматически открывать тестовую копию поисковикам.

План отката

До переключения откат прост: исправляете новую копию, а старый сайт продолжает работать. После появления новых данных на новой площадке возврат требует переноса этих изменений обратно. Простая замена A-записи может потерять свежие заказы.

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

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

Типичные ошибки

Ошибка

Что происходит

Как избежать

Перенесли файлы без базы

Пустой сайт или ошибка подключения

Проверить состав CMS и восстановить оба компонента

Оставили запись на обеих копиях

Заказы расходятся между базами

Один источник записи и финальная синхронизация

Забыли AAAA

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

Проверить IPv4 и IPv6

Сменили NS без почтовых записей

Перестала работать почта

Скопировать и проверить всю зону

Обновили всё одновременно

Трудно найти причину ошибки

Разделить перенос и обновление

Удалили старый аккаунт сразу

Нет быстрого возврата и недостающих файлов

Завершить приёмку и сохранить независимую копию

Пример плана переезда небольшого магазина

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

За день до окна работ команда проверяет доступы, копии, DNS и возможность вернуть прежний адрес. Оператор знает время паузы, разработчик — порядок синхронизации, владелец — критерии отмены. Если новая площадка не проходит тестовую оплату, переключение не начинается.

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

После финального дампа и копирования загрузок проверяют последний известный заказ и несколько документов. На новом сайте включают только нужные рабочие интеграции, меняют DNS и наблюдают за первыми реальными операциями. Старую копию оставляют в состоянии, которое не создаёт второй независимый источник заказов.

Если после переключения обнаружена ошибка, сначала сохраняют новые данные и определяют её масштаб. Возврат на старый сервер без синхронизации уже появившихся заказов недопустим. Иногда исправить один параметр нового окружения безопаснее, чем выполнять полный откат; решение принимают по заранее подготовленному плану.

Как проверить полноту файлов после передачи

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

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

Проверьте символьные ссылки, если они есть: ссылка может сохраниться, но вести на путь, отсутствующий у нового провайдера. Сверьте регистр имён. Ошибки, незаметные в одной среде, могут проявиться на файловой системе с другим поведением.

Что записать в отчёт о завершении

Сохраните дату, состав переноса, новые адреса, версии окружения и результаты ключевых сценариев. Отдельно укажите, где находится последняя независимая копия и кто имеет доступ к восстановлению.

Проверьте оплату и сроки старых услуг. Отключать нужно именно перенесённую часть: на прежнем аккаунте могут оставаться почта, домены или соседние сайты. Удаление всего аккаунта ради прекращения оплаты одного тарифа способно создать новый инцидент.

Через выбранный период наблюдения повторно проверьте ошибки, почту, задания и рост данных. Успешный первый час не исключает задачу, которая запускается только ночью или раз в неделю.

Частые вопросы

Нужно ли переносить домен к новому регистратору?

Нет. Регистрация домена, DNS и размещение сайта — разные услуги. Для смены хостинга обычно достаточно изменить нужные DNS-записи.

Можно ли переехать совсем без простоя?

Это зависит от приложения. Статический сайт переносится проще; динамическому проекту нужна согласованная работа с записью, репликацией или короткой паузой. Обещать нулевой простой без архитектурного плана нельзя.

Достаточно ли бесплатного переноса силами провайдера?

Он может упростить копирование, но приёмка остаётся задачей владельца. Заранее уточните состав работ: почта, фоновые задания, HTTPS и интеграции могут не входить в услугу.

Когда отключать старый хостинг?

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

Контрольный список переезда

  • Составлен список файлов, баз, почты и интеграций.

  • Подтверждена совместимость нового окружения.

  • Сохранена DNS-зона и подготовлено окно работ.

  • Сделана и проверена независимая копия.

  • Новая площадка проверена до изменения DNS.

  • Остановлена запись на старой стороне и выполнена финальная синхронизация.

  • Проверены HTTPS, формы, заказы, почта и фоновые задачи.

  • Сохранены рабочие URL, правила индексации и план отката.

Такой перенос заканчивается не появлением главной страницы, а подтверждением, что проект продолжает выполнять все свои задачи и новые данные сохраняются в одном понятном месте.

Первоисточники

Нашли неточность?

Сообщите адрес статьи и фрагмент через контакты редакции.