Как перенести VDS сервер Ubuntu на другой хостинг?

Есть VPS сервер с Ubuntu 16.04 c настроенным сайтом на базе NodeJS и React/Redux.
Хочу перенести его к другому провайдеру.
Устанавливать по новой все библиотеки/настраивать все конфиги не вариант - делалось всё не мной, да и максимально законсервировано, без зависимостей от внешнего мира.
В т.ч. какие-то репозитории уже умерли, какие-то утилиты обновились и несовместимы.
Физического доступа к серверу естественно нет, всё нужно делать удаленно, Есть доступ по SSH.
Какие есть варианты? Как спасти сайт?
  • Вопрос задан
  • 2277 просмотров
Пригласить эксперта
Ответы на вопрос 7
akelsey
@akelsey
Самый простой способ это подсмотреть точный дистрибутив, как я понял это Ubuntu 16.04, нужно задеплоить на новом VPS точно такой же сервер с Ubuntu 16.04, и затем с помощью команды rsync, вроде такой:

sudo rsync -aAXvP — exclude={/boot/,/dev/,/etc/fstab,/etc/modprobe*,/etc/modules/,/lost+found/,/etc/mtab,/etc/network*,/etc/sysconfig/ip*,/etc/sysconfig/kernel,/etc/sysconfig/network*,/lib/modules/,/media/,/mnt/,/proc/,/run/,/sys/,/tmp/,/var/lib/lxcfs/,/var/lock/}  root@mysite.ru:/ /

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

PS
В целом можно потом на той же машине на которую скопировался сайт попробовать обновить дистрибутив до 22.04 и уже на новую впс если всё взлетит (нужно проверить весь функционал), уже ставить систему с поддержкой, т.к. 16.04 закончилась в августе 2021.
Ответ написан
@rPman
Сначала делаем backup.
При наличии root доступа штатно linux переносится даже простым tar!

Хостер может добавить своих утилит, свои скрипты и особенности настройки сети, свой способ загрузки (например нет /boot а загрузка ядра и initramfs идет 'снаружи'), это все в принципе восстанавливается, скрипты хостера чистятся и т.п... в основном только тут могут быть проблемы но все просто решается.

Затем восстановление - и тут могут быть проблемы.
Универсально все будет работать только с не openvz/lxc/docker системами виртуализации, так как такие могут тупо не позволить работать с версиями системных библиотек (очень редко), отличных от хоста... а у тебя древняя ubuntu (я запускал в chroot просто утилиты, развернув образ с помощью debootstrap еще до появления docker, так что технически шансы проблем - минимальны). Дело в том что хостер может запретить, а точнее не дать инструментов для подмены системных файлов, а из самой работающей системы заменить ее саму нельзя (очень сложно).

p.s. я помню, поднимал систему, загрузив ее внутри user mode linux на машине даже без админовских прав, каскадно на системе с openvz (по умолчанию может не хватать некоторых модулей ядра, особенно для настроек сети, но там все решаемо), народ забыл про этот способ контейниризации без наличия аппаратной поддержки виртуализации, но она есть, старейшая, мощнейшая и удобнейшая из всех (по поводу производительности спорно - числодробилки быстро, но системные вызовы медленее)
--------------

Если виртуальная машина kvm/vbox/vmware/... то проблем не будет от слова совсем. Чтобы развернуть бакап, понадобится на новом месте загрузиться в консоль восстановления (лучше с iso образа), отформатировать файловую систему и тупо распаковать архив с бакапом (обычно /dev в архив не складывают, но если его не будет на новой системе то я помню старые версии ubuntu ругались на отсутствие null, это все решается ручным копированием тут же), затем переустановить загрузчик
grub-install /dev/sdX --root-directory=/path/to/mounted/root/

Ну и само собой архитектура исходной машины и новой должны совпадать, т.е. нельзя смешивать ни тип процессора (x86/arm ни битность x86/x64), правда особых проблем с запуском x86 на x64 быть не должно.
Ответ написан
Комментировать
Sanes
@Sanes
Устанавливать по новой все библиотеки/настраивать все конфиги не вариант

Чтобы следующий раз не страдать. Настройте ещё раз, но теперь с помощью Ansible.
Ответ написан
Комментировать
@MaxKozlov
согласен с опубликованными ответами в части "Перенастроить"
при наличии доступа только к ssh (надеюсь, админского) относительно просто будет попробовать rear - relax and recover
Бэкап на шелл-скриптах и базовых утилитах. При переносе могут быть проблемы только с зеркалами на btrfs и, может, udev, если основа виртуалки "другой системы"
Ответ написан
Комментировать
caramingo
@caramingo
админ из русского манчестера
Доступ в админку в VPS есть?
Если есть возможность загрузиться с загрузочного диска подключив VPSку
То можно каким нибудь акронисом, снять образ рабочей системы и потом развернуть его на новом VPS провайдере.
Ответ написан
Какая панель управления VDS? Если в ней нет возможности самому сделать образ текущего диска, тогда можно попросить хостера, чтобы сделал образ и выдал его.
Ответ написан
@Ragnar1
Linux teacher for beginners.
Подклбчаетесь через веб интерфейс хостинг провайдера к вашей виртуальной машине, завершает её работу, подключите образ clonezilla, клонирует диск в файл.
На новой vps делаете тоже самое до момента подключения образа clonezilla, выбираете тот файл с образом старой системы и ждёте завершения процесса
Размер диска целевого vps должен быть равен или больше исходного или можгут возникнуть проблемы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы