Да это будет работать (linux вообще универсальная ОС, лишь бы архитектура x86/x64/.. процессора подходила, исключение - gentoo, там привязка может быть буквально к модели процессора), возможно потребуются телодвижения для настройки загрузчика и переустановки ядра (linux-image-...), скорее всего, если аппаратный конфиг будет похож (например и там и там одни и те же диски, не по размеру а по сути, например один диск на ОС а другие на данные базы и файлы веб сервера или образы docker), то все заведется без проблем, я так переносил несколько раз очень странные конфиги, дублируя на целевой машине даже uuid разделов и lvm томов.
И нет, лучше так не делать, скорее всего вместе с ОС там будут установлены утилиты от провайдера, для управления этой виртуалкой, и они скорее всего будут плохо работать у другого провайдера (по уму так могут не делать, и провайдеру достаточно ssh ключей).
Правильный бакап почти полностью совпадает с инструкцией по установке приложения на сервер, в идеале, вместе с самим приложением должны идти скрипты резервного копирования и восстановления, или хотя бы список файлов и каталогов (если их нет то я настоятельно рекомендую их создать, вам же нужно как то в будущем проводить тестирование восстановления из бакапа).
Если документации нет, то придется реверсинженерить конфигруационные файлы nginx и php, чтобы понять, в каких каталогах хранятся файлы проекта, но остаются конфигурационные файлы сервера, настройки сети, файловой системы, снапшотов или томов (иногда они чувствительно настроены для проекта). Базы данных тоже нужно копировать с осторожностью, есть сами базы, они копируются штатными инструментами, а есть пользователи и права доступа, есть конфиги самого сервера баз данных (кстати они могут быть тоже привязаны к серверу, например к объему памяти) или к примеру настройки репликации.
И да, есть еще образы docker, хорошо их можно копировать не смотря на то что внутри (это одна из главных фич контейнеризации) - docker save и docker load. Осторожно, сетевой конфиг сервера (а именно имена сетевых интерфейсов и наличие bridge) в данном случае может потребовать дополнительных шевелений.
p.s. Есть способ облегчить реверсинженеринг:
В зависимости от используемого пакетного менеджера, можно получить список установленных пакетов, затем сдублировать установку простым запуском (для debian based дистрибутивов) apt install список_имен_пакетов_с_версиями или dpkg -i имя_файла.deb, если предварительно их скачать из репозитория apt download в отдельном каталоге с помощью chroot.
А затем банально сравнить списки файлов на оригинальной установке и этой фиктивной, все различия можно автоматически скопировать (новые, измененные и удаленные файлы). Я делал очень просто - формировал список файлов, в виде полный_путь_имя_файла размер дата_модификации (можно вместо размера и даты хеш md5 но это дольше и особого смысла не имеет, если нет злоумышленника, стремящегося помешать этому анализу) для оригинального каталога и сравниваемого, полученные файлы сортировал утилитой sort и сравнивал diff, полученный файл можно смотреть глазами а можно написать утилиту которая все будет копировать сама.