Microsoft มีคำแนะนำโดยละเอียดเกี่ยวกับการจับภาพ วีเอชดี เพื่อย้ายไปที่ Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/prepare-for-upload-vhd-image
อีกวิธีหนึ่งคือการสร้าง วิม ไฟล์โดยการบูทจาก Windows ติดตั้ง ISO: 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 และใช้ วว, gz, และ รีซิงค์:
$ lsblk # จะแสดงอุปกรณ์บล็อก
$ เมานต์ -o ro /dev/sdb2 /mnt
$ ซีดี / ล้าน
$ls# เพื่อยืนยันว่าเป็นพาร์ติชัน / การติดตั้งที่ถูกต้อง
$ umount / ล้าน
$ dd if=/dev/sdb2 | gzip -9 > image.raw.gz
$ rsync image.raw.gz my.newhost.com:/
อุปสรรค์ของแนวทางนี้คือคุณต้องการพื้นที่เพิ่มเป็นสองเท่าในขณะที่คุณเพิ่งคัดลอกไฟล์ซึ่งยังคงต้องคลายการบีบอัดและขึ้นอยู่กับวัตถุประสงค์ของคุณ เขียนไปยังอุปกรณ์บล็อกบนเป้าหมาย:
# dd if=image.raw.gz | กันซิป | dd of=/dev/sdg1
อาจจะดีกว่า dd:
$ qemu-img แปลง -f ดิบ -O vhd /dev/sdb2 image.vhd
$ rsync image.vhd my.remote.host:~
ซึ่งคุณสามารถเรียกใช้บนโฮสต์ระยะไกลด้วย QEMU/KVM ได้:
$ qemu-system-x86_64 -m 2G -hda image.vhd
ข้อดีของวิธีนี้คือคุณสามารถใช้รูปแบบใดก็ได้ เช่น qcow2. เพียงแค่แทนที่ วีเอชดี ด้านบนสำหรับ qcow2. คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ คิวมู และ ผู้จัดการ virt ในเอกสารอย่างเป็นทางการมีเครื่องมือ GUI ที่มีประโยชน์อยู่
อีกทางหนึ่ง หากคุณอยู่ใน LAN เดียวกันหรือไม่จำเป็นต้องทำการคัดลอกต่อ ซึ่งคุณสามารถทำได้ข้างต้นโดยเรียกใช้คำสั่ง rsync ซ้ำๆ จนกว่าการคัดลอกทั้งหมดจะเสร็จสิ้น และคุณสามารถคัดลอกไปยังรายการใหม่ได้โดยตรง บล็อกอุปกรณ์บนเครื่องเป้าหมาย
อนุญาตก่อน วว เพื่อเรียกใช้ในฐานะรูทบนเครื่องเป้าหมาย ซึ่งจำเป็นต้องเขียนโดยตรงไปยังอุปกรณ์บล็อก หากคุณไม่ได้เข้าสู่ระบบด้วย ราก ผู้ใช้:
$ssh 192.168.1.2
$visudo
# เพิ่ม:
myuser ALL = 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 my.remotehost.com "echo `~/.ssh/id_rsa.pub` | sudo tee -a /root/.ssh/id_rsa.pub" # เพิ่มคีย์ ssh ผู้ใช้ของคุณไปยังบัญชีรูทระยะไกล
จากนั้นรับสคริปต์และเรียกใช้:
$ git โคลน https://github.com/bscp-tool/bscp-tool.github.io.git
$ bscp /dev/sda1 my.remotehost.com:/dev/sdg1