Як перенести дані з одного VPS на інший без переривання роботи сервера

🔹 Для чого це потрібно

Перенесення даних між VPS може знадобитися, якщо:

  • потрібно перейти на новий тариф чи хостинг;
  • старий VPS має застарілу ОС або недостатньо ресурсів;
  • ви хочете змінити локацію серверів (наприклад, інший дата-центр);
  • проводиться оновлення інфраструктури без простою сервісу.

Основна мета — зробити міграцію без зупинки роботи сайту чи застосунку.

⚙️ 1. Підготовка до перенесення

1. Створіть новий VPS — бажано з тією ж ОС, що і на старому сервері.

2. Перевірте доступи:

  • SSH-доступ до обох серверів;
  • root-права;
  • відкритий порт 22 для SSH-підключення.

3. Оновіть систему на обох VPS:

sudo apt update && sudo apt upgrade -y

4. Переконайтесь, що на новому VPS достатньо місця для копій.

📦 2. Перенесення файлів і баз даних

🔸 Варіант 1: rsync (рекомендовано)

rsync дозволяє синхронізувати файли між двома серверами без зупинки роботи.

rsync -avz -e ssh /var/www/ root@NEW_SERVER_IP:/var/www/

  • -a — архівний режим (зберігає права та власників);
  • -v — показує процес копіювання;
  • -z — стискає дані;
  • /var/www/ — приклад директорії з файлами сайту.

🔁 Після першого копіювання можна повторно виконати команду перед фінальним перемиканням DNS — тоді rsync скопіює лише зміни.

🔸 Варіант 2: tar + scp (архівування)

tar czf backup.tar.gz /var/www/

scp backup.tar.gz root@NEW_SERVER_IP:/root/

На новому VPS:

tar xzf backup.tar.gz -C /

🔸 Варіант 3: перенесення бази даних (MySQL / MariaDB)

На старому VPS:

mysqldump -u root -p database_name > backup.sql

scp backup.sql root@NEW_SERVER_IP:/root/

На новому VPS:

mysql -u root -p database_name < /root/backup.sql

🌐 3. Перевірка роботи на новому VPS

Змініть файл /etc/hosts на вашому локальному комп’ютері:

NEW_SERVER_IP yourdomain.com

Це дозволить перевірити сайт до оновлення DNS. Переконайтесь, що сайт і сервіси працюють коректно.

    🔄 4. Перемикання DNS без простою

    1. Зменште TTL записів у DNS до 300 секунд (5 хвилин) заздалегідь.
    2. Після перевірки роботи нового VPS — оновіть A-запис домену на IP нового сервера.
    3. DNS-перехід зазвичай триває 5–30 хвилин, у цей час користувачі можуть потрапляти як на старий, так і на новий сервер.
      → Щоб уникнути втрати даних (наприклад, нових замовлень чи повідомлень), запустіть rsync повторно після оновлення DNS, щоб синхронізувати зміни.

    🧱 5. Фінальні дії

    • Переконайтесь, що резервні копії створено.
    • Видаліть тимчасові файли (backup.tar.gz, backup.sql).
    • Оновіть SSL сертифікат, якщо він прив’язаний до IP.
    • За потреби — розширте диск або налаштуйте бекап на новому VPS.

    🧩 6. Корисні поради

    • Для складних проєктів (WordPress, Laravel, Docker) зручно використовувати rsync + MySQL dump або Docker Volume backup.
    • Якщо передбачається тривалий перехід, можна тимчасово налаштувати reverse proxy на старому VPS, який перенаправлятиме запити на новий IP.
    • Для автоматизації можна використати Rclone або scp з SSH-ключами (щоб не вводити пароль).