Перейти к содержимому

Перенос сайта с другого хостинга

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

Уровень
Средний
Время чтения
3 мин чтения
Обновлено
Проверено на
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Содержание
  1. План
  2. Копирование файлов
  3. Перенос базы данных
  4. Проверка до переключения DNS
  5. Переключение
  6. Частые ошибки

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

План

  1. 01За сутки до переезда снизьте TTL A-записей домена до 300 секунд.
  2. 02Установите на новом сервере то же окружение: веб-сервер, версию PHP, Node.js или Python, СУБД.
  3. 03Скопируйте файлы и базу данных.
  4. 04Проверьте сайт на новом сервере через файл hosts.
  5. 05Переведите сайт на старом хостинге в режим обслуживания и сделайте финальную синхронизацию.
  6. 06Смените A-запись на новый IP и выпустите сертификат.
  7. 07Через несколько дней верните обычный TTL и отключите старый хостинг.

Копирование файлов

rsync копирует только изменения, поэтому повторный запуск перед переключением пройдёт быстро. Выполняйте на новом сервере, если на старом есть доступ по SSH:

bash
$ rsync -avz --progress [email protected]:/var/www/example.com/ /var/www/example.com/

Слэш в конце исходного пути важен: копируется содержимое каталога, а не сам каталог. Если на старом хостинге только FTP или панель управления, скачайте архив сайта и загрузите его по SFTP.

Перенос базы данных

MySQL/MariaDB: на старом сервере
$ mysqldump --single-transaction --routines --triggers -u USER -p DBNAME | gzip > db.sql.gz
На новом сервере: создайте пустую базу и пользователя, затем загрузите дамп
$ scp [email protected]:db.sql.gz .$ gunzip -c db.sql.gz | mariadb -u USER -p DBNAME
PostgreSQL
$ pg_dump -Fc -U USER DBNAME > db.dump$ pg_restore --no-owner -U USER -d DBNAME db.dump

Проверка до переключения DNS

Добавьте строку в файл hosts на своём компьютере — браузер будет открывать домен с нового сервера, пока для всех остальных он работает по-старому. В macOS и Linux это /etc/hosts, в Windows — C:\Windows\System32\drivers\etc\hosts (Блокнот от имени администратора).

hosts
203.0.113.10 example.com www.example.com

Сертификата на новом сервере ещё нет — проверяйте по HTTP или примите предупреждение браузера. После проверки удалите строку из hosts.

Переключение

bash
$ # финальная синхронизация после заморозки старого сайта$ rsync -avz --delete [email protected]:/var/www/example.com/ /var/www/example.com/$ # после смены A-записи$ dig @1.1.1.1 +short example.com$ certbot --nginx -d example.com -d www.example.com

Частые ошибки

  • Забыли перенести задачи cron и фоновые процессы — сайт работает, но письма и отчёты не формируются.
  • Кодировка базы изменилась при импорте — используйте utf8mb4 и для базы, и для дампа.
  • Старый хостинг отключили в день переезда: посетители с закэшированным DNS видели ошибку.
  • Почта домена была на старом хостинге — перенесите MX-записи отдельно, до отключения.

Дочитайте до конца — статья засчитается в обучении автоматически.

  • перенос
  • миграция
  • переезд
  • rsync
  • дамп базы
  • DNS

Статья помогла?