У Microsoft есть подробные инструкции по захвату VHD
для перехода в Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/prepare-for-upload-vhd-image
Другой способ — создать ВИМ
файл, загрузившись с установочного ISO-образа Windows: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/capture-and-apply-windows-using-a-single-wim?view=windows-11
Вы должны знать, что Microsoft на самом деле не хочет упрощать это, потому что это также упростило бы пиратство. Конечно, на Azure это не проблема.
Лично я бы загрузил любой Linux с USB и использовал дд
, гз
, и rsync
:
$ lsblk # покажет блочные устройства
$ mount -o ro /dev/sdb2 /mnt
$ кд/млн
$ ls #, чтобы подтвердить, что это правильный раздел / установка
$ сумма /млн
$ дд, если=/dev/sdb2 | gzip -9 > image.raw.gz
$ rsync image.raw.gz my.newhost.com:/
Загвоздка с этим подходом заключается в том, что вам потребуется вдвое больше места, поскольку вы просто копируете файл, который затем все еще необходимо распаковать и, в зависимости от вашей цели, записать на блочное устройство на цель:
# дд, если=image.raw.gz | оружейный | дд=/dev/sdg1
Возможно, лучше, чем дд:
$ qemu-img convert -f raw -O vhd /dev/sdb2 image.vhd
$ rsync image.vhd my.remote.host:~
Который вы можете запустить виртуально на удаленном хосте с помощью QEMU/KVM:
$ qemu-system-x86_64 -m 2G -hda image.vhd
Преимущество этого подхода в том, что вы можете использовать любой формат, например qcow2
. Просто замените VHD
выше для qcow2
. Вы можете прочитать больше о кему
и вирт-менеджер
в их официальной документации есть несколько полезных инструментов с графическим интерфейсом.
В качестве альтернативы, если вы находитесь в той же локальной сети или вам не нужно иметь возможность возобновить копирование, что вы можете сделать выше, просто запустив команду rsync несколько раз, пока вся копия не будет сделана, и вы можете скопировать непосредственно в новый заблокировать устройство на целевой машине.
Сначала разрешите дд
для запуска от имени пользователя root на целевой машине, что потребовало бы прямой записи на блочное устройство, если вы не входите в систему с корень
пользователь:
$ сш 192.168.1.2
$ визуально
# Добавлять:
myuser ВСЕ = NOPASSWD: /bin/dd
# затем введите :w ENTER и :q ENTER
Затем вы можете просто ввести:
$ sudo dd if=/dev/sdb2 | gzip -9 - | ssh 192.168.1.2 "gunzip - | sudo dd of=/dev/sdg1"
Еще одним вариантом является этот скрипт Python, который работает аналогично rsync, поэтому, если копирование прервано, его можно возобновить, так что лучше обоих. Он самоуверен в том, что использует ssh
к учетной записи root на удаленном хосте, которая по умолчанию не разрешает вход с паролем, поэтому вам нужно добавить ssh
ключ
. Есть несколько способов сделать это, вот один из них:
$ ssh my.remotehost.com "echo `~/.ssh/id_rsa.pub` | sudo tee -a /root/.ssh/id_rsa.pub" # добавьте свой пользовательский ключ ssh в удаленную учетную запись root
Затем просто получите скрипт и запустите его:
$ git клон https://github.com/bscp-tool/bscp-tool.github.io.git
$ bscp /dev/sda1 my.remotehost.com:/dev/sdg1