如何将使用'dd'创建的驱动器映像拆分为每个分区的单独文件?

Modified on: Sun, 25 Aug 2019 17:00:03 +0800

我用:

创建了一个故障驱动器的映像

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=1但是mount抱怨NTFS signature is missing,所以我觉得我做得不对。

作者:Joe A

最佳答案

您根本不需要拆分它。

使用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

作者:,Sven

相关问答

添加新评论