Hetzner · General

Перенос сервера с Hetzner на другой хостинг: чек-лист и команды

Обновлено

Сервер, перемещаемый по мосту из одного дата-центра в другой, с контейнерами данных

Переезд с Hetzner на другой хостинг ничем принципиально не отличается от любой другой миграции: нужно поднять новый сервер, перенести данные и настройки, проверить всё до переключения и только потом направить трафик. Причины бывают разные: рост цен в 2026 году (подробности), ограниченная доступность тарифов, вопросы оплаты и условий договора (Как оплатить Hetzner). Эта статья — рабочий план с командами для Linux-сервера с сайтом, базой данных, Docker и почтой. Куда переезжать, смотрите в обзоре Аналоги Hetzner.

Шесть этапов переноса сервера: инвентаризация, TTL, новый сервер, копирование, проверка, переключение
Шесть этапов миграции.

Принципы, которые экономят нервы

  • Старый сервер не удаляйте, пока новый не отработал несколько суток под нагрузкой.
  • Переключайте трафик в самом конце, когда новый сервер полностью проверен.
  • Не переносите «мусор». Если систему настраивали годами, проще поставить чистую ОС и развернуть только нужные сервисы.
  • Сначала бэкап, потом перенос. Убедитесь, что копию можно восстановить.
  • Меняйте одну вещь за раз: переезд плюс обновление PHP/PostgreSQL одновременно обычно заканчивается долгой отладкой.

Этап 1. Инвентаризация

Выпишите, что работает на старом сервере. Эти команды покажут большую часть:

hostnamectl; lsb_release -a                 # ОС
ss -tulpn                                   # какие порты слушаются, кем
systemctl list-units --type=service --state=running
docker ps -a; docker compose ls             # контейнеры
crontab -l; ls /etc/cron.d /etc/cron.daily  # задания по расписанию
df -h; lsblk                                # диски
dpkg -l | wc -l                             # число пакетов (apt-системы)
ls /etc/nginx/sites-enabled /etc/apache2/sites-enabled 2>/dev/null
ls /var/spool/cron                          # пользовательские cron

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

  • домены и DNS-записи, TTL, внешние сервисы с привязкой к IP (платёжные шлюзы, API с белыми списками);
  • сертификаты (Let's Encrypt или купленные);
  • почтовые сервисы, SPF/DKIM/DMARC и обратную запись DNS (rDNS);
  • Floating IP, приватные сети, дополнительные адреса;
  • секреты: ключи, токены, файлы .env.

Этап 2. Подготовка DNS

За 24–48 часов до переключения уменьшите TTL у записей A/AAAA (и CNAME) до 300 секунд. Тогда в день переезда новые адреса быстро разойдутся по резолверам. Старый TTL нужно вернуть после завершения. Запишите текущие значения всех записей. Если домен управляется у регистратора, убедитесь, что вы можете войти в панель.

Этап 3. Подготовьте новый сервер

  1. Закажите сервер с запасом по ресурсам относительно фактического потребления, а не по названию тарифа. Проверьте его производительность тестами из статьи VPS в Германии: как выбрать (раздел про проверку).
  2. Установите ту же или более новую ОС той же семьи.
  3. Настройте безопасность: ключи, пользователь, файрвол, автообновления — шаги описаны в статье Первый сервер в Hetzner Cloud.
  4. Установите те же версии ПО: Nginx/Apache, PHP, Node.js, PostgreSQL/MySQL, Docker. Версии баз данных лучше не повышать во время переезда.

Этап 4. Перенос файлов

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

# с нового сервера (тянем со старого), от пользователя с ключом доступа
rsync -aHAX --numeric-ids --info=progress2 --dry-run -e ssh root@OLD_IP:/var/www/ /var/www/
rsync -aHAX --numeric-ids --info=progress2 -e ssh root@OLD_IP:/var/www/ /var/www/

Ключи: -a — архивный режим, -H — жёсткие ссылки, -A и -X — ACL и расширенные атрибуты, --numeric-ids — сохраняет числовые идентификаторы владельцев. Для старого сервера создайте отдельный ключ только на чтение или временный доступ и удалите его после переезда. Повторите rsync в день переключения: он передаст только изменения.

Каталоги, которые обычно нужны: /var/www, /etc/nginx, /etc/php, /etc/letsencrypt, /opt, /home, /srv, /root/.ssh, настройки cron. Не копируйте целиком /etc, /boot и каталоги ядра: версии и устройства на новом сервере другие. Общие приёмы описаны в справке Перенос серверов и в Наладка системы после замены сервера.

Этап 5. Перенос баз данных

MySQL / MariaDB

# на старом сервере
mysqldump --single-transaction --routines --triggers --events --all-databases | gzip > /root/all-$(date +%F).sql.gz
# передать и восстановить на новом
scp /root/all-*.sql.gz root@NEW_IP:/root/
zcat /root/all-*.sql.gz | mysql

Для больших баз используйте репликацию или Percona XtraBackup, чтобы сократить простой.

PostgreSQL

pg_dumpall --globals-only > globals.sql        # роли и права
pg_dump -Fc -f mydb.dump mydb                  # каждая база
# на новом сервере
psql -f globals.sql
createdb mydb && pg_restore -d mydb -j 4 mydb.dump

Версия PostgreSQL на новом сервере должна быть не ниже старой; расширения (PostGIS, pg_trgm и др.) нужно установить заранее.

Минимальный простой

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

Этап 6. Docker и контейнеры

Если проект описан в docker compose и хранится в Git, перенос сводится к клонированию репозитория и восстановлению томов.

# на старом: сохранить именованный том в архив
docker run --rm -v myvol:/data -v $(pwd):/backup alpine tar czf /backup/myvol.tgz -C /data .
# на новом: восстановить
docker volume create myvol
docker run --rm -v myvol:/data -v $(pwd):/backup alpine tar xzf /backup/myvol.tgz -C /data
docker compose up -d

Образы пересоберите из исходников или подтяните из реестра; убедитесь, что .env и секреты перенесены безопасно. Если на новом сервере другая архитектура процессора (например, ARM вместо x86), образы должны поддерживать её.

Этап 7. Почта, сертификаты и внешние привязки

  • Сертификаты. Либо перенесите /etc/letsencrypt, либо выпустите заново (certbot, acme.sh) после переключения DNS. Для выпуска по HTTP-проверке домен уже должен указывать на новый сервер; DNS-проверка (DNS-01) позволяет получить сертификат заранее.
  • Исходящая почта. Новый IP должен иметь корректные rDNS, SPF, DKIM и DMARC. Некоторые провайдеры закрывают порт 25: уточните политику и при необходимости используйте внешний SMTP-сервис. Для Hetzner Cloud rDNS описан в справке Облачный сервер rDNS.
  • Белые списки по IP. Сообщите контрагентам новый адрес заранее: платёжные системы, API, базы данных.
  • Floating IP. Он привязан к проекту Hetzner и не переносится к другому провайдеру; пересмотрите схему отказоустойчивости на новом месте (Плавающие IP — FAQ).

Этап 8. Проверка до переключения

Проверьте новый сервер, не меняя DNS: направьте нужный домен на новый IP только на своём компьютере через файл hosts (Windows: C:\Windows\System32\drivers\etc\hosts, Linux/macOS: /etc/hosts):

203.0.113.10 example.com www.example.com

Или используйте curl --resolve:

curl -I --resolve example.com:443:NEW_IP https://example.com/

Проверьте: главную и несколько внутренних страниц, формы, авторизацию, загрузку файлов, админку, фоновые задачи, cron, отправку писем, статус сервисов (systemctl --failed), журналы ошибок. Сравните размеры каталогов и число записей в ключевых таблицах со старым сервером.

Этап 9. Переключение

  1. Объявите окно работ, если это нужно пользователям.
  2. Остановите запись на старом сервере: режим обслуживания или остановка сервисов.
  3. Выполните финальный rsync и финальный дамп баз, загрузите их на новый сервер.
  4. Включите сервисы на новом сервере и проверьте работу по hosts.
  5. Измените A/AAAA записи на новый IP.
  6. Следите за логами обоих серверов: часть запросов некоторое время будет приходить на старый адрес.
  7. Если на старом сервере остались запросы, включите на нём переадресацию на новый адрес или остановите запись.

Этап 10. После переезда

  • Верните TTL к обычному значению (3600 и выше).
  • Настройте резервные копии на новом сервере и проверьте восстановление.
  • Проверьте индексацию и ответы поисковых ботов: код 200, отсутствие редиректов на старый IP, актуальные sitemap.xml и robots.txt.
  • Через несколько дней, убедившись, что всё стабильно, сделайте финальный снимок старого сервера и удалите его, чтобы не платить зря.
  • Заберите данные из Storage Box и снимков, если они вам нужны (инструкция по Storage Box).

План отката

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

Особые случаи

Windows Server

Перенос Windows обычно означает развёртывание заново и перенос приложений и данных; образ диска не гарантирует работоспособность на другом железе или у другого провайдера и не всегда допускается лицензией. См. справки Windows Server 2019 и Windows в облаке Hetzner.

Выделенный сервер с RAID и LVM

Логическую структуру воспроизведите на новом сервере с нуля и копируйте файлы, а не блочные устройства. Для вопросов по разметке смотрите RAID и LVM.

Виртуальные машины

Диски виртуальных машин (qcow2, raw, VMDK) конвертируются утилитой qemu-img convert. Перед этим остановите машину и проверьте драйверы дисков и сети в целевой системе.

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

Сколько будет простоя при переезде?

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

Можно ли перенести снимок Hetzner Cloud на другого провайдера?

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

Что делать с Floating IP и rDNS?

Они остаются в аккаунте Hetzner. На новом хостинге запросите новый адрес и настройте rDNS у нового провайдера, заранее проверьте SPF и DKIM.

Как не потерять почту при смене IP?

Настройте SPF, DKIM и rDNS для нового IP до переключения, а на время прогрева используйте внешний SMTP-сервис или оставьте отправку на старом сервере.

Когда удалять старый сервер?

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