[Решено] Как перенести VPS сервер с DigitalOcean на Hetzer
Руководство по миграции 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