[Решено] Как перенести VPS сервер с DigitalOcean на Hetzer

Категория: Linux

Руководство по миграции VPS сервера на Hetzner.

Почему?

DigitalOcean мне нравится, и за 5 лет с ним не было никаких проблем. Но сложно отказаться от VPS с параметрами 2 vCPU + 4 GB RAM + 40 GB HDD за €4.9/месяц. Raid HDD вместо SSD меня не смущает..

Примечание

Проверить какой установлен диск (HDD или SSD) можно командой:

cat /sys/block/sda/queue/rotational
# или
lsblk -d -o name,rota

0 = SSD, 1 = HDD

Миграция VPS

Внимание!

Перед миграцией очень напоминаю - не поленитесь и сделайте backup или snapshot исходного сервера.

Я, вроде как, и знал что делал, а за малым не затер исходный сервер файлами с чистого VPS.. Не на том сервере rsync запустил)

Клонировать сервер можно разными способами, я остановился на rsync.

1. Создаем новый VPS с Ubuntu 18.04 на Hetzer Cloud. Для Украины лучший пинг был на Nuremberg.

2. Запускаем New VPS в режиме восстановления (Rescue Mode). Вы найдете пункт "RESCUE" в меню сервера. * В Rescue режиме сервер загружается из урезанного linux64 образа в ОЗУ.

3. Идем на New VPS через браузерный терминал или по ssh с локалки:

ssh root@<x.x.x.x> -o PreferredAuthentications=password  ## x.x.x.x - IP нового VPS

4. Монтируем основной раздел /dev/sda1:

## Выполняем на новом чистом New VPS!

ls /dev/[hsv]d[a-z]*[0-9]*
mkdir /media/disk
mount /dev/sda1 /media/disk

df -H                 ## Проверим доступное/занятое место на дисках
du -shx /media/disk/  ## Проверим размер занимаемого места, можно наблюдать за процессом

5. Идем на наш исходный Old VPS сервер на DigitalOcean и запускаем синк файлов под root. Спокойней будет если запустить клонирование с отдельного snapshot, который не страшно пох*рить.

## Выполняем на нашем исходном Old VPS!

rsync -aHAXSz --info=progress2 --numeric-ids -e "ssh" --rsync-path="sudo rsync" \
      --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/etc/fstab","/etc/udev/rules.d/*","/etc/network/*","/lib/modprobe.d/*"} / root@X.X.X.X:/media/disk/

X.X.X.X - это IP целевого/нового сервера.

Опции rsync:

-a    архивный режим. Копирует рекурсивно каталоги, создает symlinks, сохраняет права/permissions, дату модификации, группу/владельца.
-u, --update    режим обновления (не переписывать более новые файлы)
-H, --hard-links       сохранять жесткие ссылки
-x, --one-file-system  копировать только одну файловую систему
-v    verbose
-z    compress

--delete  !! УДАЛИТ ФАЙЛЫ НА КОНЕЧНОМ СЕРВЕРЕ, которых нет на исходном !!

--exclude=/boot/*  Не копировать ядро.

6. После копирования возвращаемся на New VPS и в том же Rescue Mode переустановим grub:

## Выполняем на новом чистом New VPS!

mount --bind /proc /media/disk/proc
mount --bind /sys /media/disk/sys
mount --bind /dev /media/disk/dev
mount --bind /run /media/disk/run
chroot /media/disk
grub-install /dev/sda
update-grub
exit
reboot

Готово. После перезагрузки сервер должен работать, можно перенаправлять DNS'ы.

Если что-то не так, смотрите логи:

less /media/disk/var/log/syslog


Другие способы переноса VPS

Используем tar:

## Выполняем на нашем исходном Old VPS!

sudo su
tar -P --exclude="/etc/fstab" --exclude="/etc/network/*" --exclude="/proc/*" --exclude="/tmp/*" --exclude="/sys/*" --exclude="/dev/*" --exclude="/mnt/*" --exclude="/boot/*" --exclude="/root/*" \
    -czvf - / | ssh -o PreferredAuthentications=password root@X.X.X.X "tar -xzv -C /media/disk/ -f -"

* Опция -P позволяет указывать абсолютные пути. Если вы указали абсолютные пути и получаете ошибку: "tar: Removing leading '/' from member names".

Еще можно клонировать весь раздел /dev/sda1 утилитой dd. Я посчитал, что так придется больше вычищать и править конфиги на новом сервере.

#migration vps, #clone vps to another vps

категория: Linux