Linux

如何將使用“dd”創建的驅動器映像拆分為每個分區的單獨文件?

  • February 25, 2012

我創建了一個故障驅動器的圖像:

dd if=/dev/sde of=/mnt/image001.dd

該驅動器只有兩個分區:

  Device Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      102400    7  HPFS/NTFS
/dev/sde2              13       60802   488282112    7  HPFS/NTFS

如何將映像 (image001.dd) 拆分為兩個或三個文件(1:MBR;2:分區 1;3:分區 2),以便可以在其中掛載文件系統?

我發現對我不起作用的解決方案是使用split創建許多 512K 文件,然後將cat它們重新組合成三個文件(1:512K,2:105M,3:其餘),但我沒有的磁碟空間。

歷史:

我已經將整個映像複製到一個新驅動器,它可以啟動並且大部分都可以工作。似乎 FS 在舊的故障驅動器上已損壞,並dd複制了損壞的部分(應該如此),然後我將它們寫入新驅動器。我的解決方案是掛載我複制的 FS,並且只複製文件(使用rsync或其他東西),這樣就不會複製壞位。

更新1:我試過dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1mount抱怨NTFS signature is missing,所以我認為我沒有做對。

您根本不需要拆分它。

用於parted獲取有關分區表的詳細資訊:

parted image001.dd

parted,用命令切換到字節單位u,然後B。之後,發出命令print

您將獲得如下所示的輸出(輸出來自實際系統,而不是圖像):

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type     File system     Flags
2      1048576B      400556031B    399507456B    primary  ext4            boot
3      400556032B    21165506559B  20764950528B  primary  ext4
1      21165506560B  25164775423B  3999268864B   primary  linux-swap(v1)

您可以使用該Start數字作為回送掛載的偏移量:

mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue

將第三個分區掛載在/mnt/rescue.

引用自:https://serverfault.com/questions/363754