Microsoft có một số hướng dẫn chi tiết về việc chụp một VHD
để chuyển sang Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/prepare-for-upload-vhd-image
Một cách khác là tạo một WIM
tệp bằng cách khởi động từ ISO cài đặt Windows: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/capture-and-apply-windows-using-a-single-wim?view=windows-11
Bạn nên biết rằng Microsoft không thực sự muốn làm cho điều này trở nên dễ dàng, bởi vì nó cũng sẽ khiến vi phạm bản quyền dễ dàng hơn. Tất nhiên trên Azure, đây không phải là vấn đề.
Cá nhân tôi sẽ khởi động bất kỳ Linux nào từ USB và sử dụng đ
, gz
, và rsync
:
$ lsblk # sẽ hiển thị các thiết bị khối
$ mount -o ro /dev/sdb2 /mnt
$ cd / triệu
$ ls # để xác nhận rằng đó là phân vùng/cài đặt phù hợp
số lượng $ /mnt
$ dd if=/dev/sdb2 | gzip -9 > image.raw.gz
$ rsync image.raw.gz my.newhost.com:/
Điều khó khăn với phương pháp này là bạn cần nhân đôi dung lượng vì bạn chỉ đang sao chép một tệp mà sau đó vẫn cần được giải nén và tùy thuộc vào mục đích của bạn, được ghi vào một thiết bị khối, trên mục tiêu:
# dd if=image.raw.gz | khóa kéo | đ của=/dev/sdg1
Có lẽ tốt hơn dd:
$ qemu-img convert -f raw -O vhd /dev/sdb2 image.vhd
$ rsync image.vhd my.remote.host:~
Mà bạn có thể chạy hầu như trên máy chủ từ xa với QEMU/KVM:
$ qemu-system-x86_64 -m 2G -hda image.vhd
Lợi ích của phương pháp này là bạn có thể sử dụng bất kỳ định dạng nào, chẳng hạn như qcow2
. Chỉ cần thay thế vhd
ở trên cho qcow2
. Bạn có thể đọc thêm về qemu
và quản lý đức hạnh
trong tài liệu chính thức của họ, có sẵn một số công cụ GUI hữu ích.
Ngoài ra, nếu bạn đang ở trong cùng một mạng LAN hoặc không cần phải tiếp tục sao chép - bạn có thể thực hiện thao tác này ở trên bằng cách chỉ cần chạy lệnh rsync lặp lại cho đến khi hoàn tất toàn bộ quá trình sao chép và bạn có thể sao chép trực tiếp sang mạng mới. chặn thiết bị trên máy mục tiêu.
đầu tiên cho phép đ
để chạy với quyền root trên máy mục tiêu, sẽ được yêu cầu ghi trực tiếp vào thiết bị khối nếu bạn không đăng nhập bằng nguồn gốc
người dùng:
$ ssh 192.168.1.2
$ trực quan
# Cộng:
myuser TẤT CẢ = NOPASSWD: /bin/dd
# sau đó gõ :w ENTER và :q ENTER
Sau đó, bạn có thể chỉ cần phát hành:
$ sudo dd if=/dev/sdb2 | gzip -9 - | ssh 192.168.1.2 "gunzip - | sudo dd of=/dev/sdg1"
Tuy nhiên, một tùy chọn khác là tập lệnh Python này hoạt động tương tự như rsync, vì vậy nếu quá trình sao chép bị gián đoạn, nó có thể được tiếp tục, vì vậy tốt nhất là cả hai. Đó là ý kiến ở chỗ nó sử dụng ssh
vào tài khoản root trên máy chủ từ xa, mặc định không cho phép đăng nhập mật khẩu, vì vậy bạn phải thêm một ssh
Chìa khóa
. Có một số cách để làm điều này, đây là một cách:
$ ssh my.remotehost.com "echo `~/.ssh/id_rsa.pub` | sudo tee -a /root/.ssh/id_rsa.pub" # thêm khóa ssh người dùng của bạn vào tài khoản root từ xa
Sau đó, chỉ cần lấy tập lệnh và chạy nó:
$ git clone https://github.com/bscp-tool/bscp-tool.github.io.git
$ bscp /dev/sda1 my.remotehost.com:/dev/sdg1