创build没有未分配分区的USB驱动器的映像

我有8GB的USB驱动器连接到我的系统,看起来像这样:

[root@host]# fdisk -l /dev/sdb Disk /dev/sdb: 8462 MB, 8462008320 bytes 255 heads, 63 sectors/track, 1028 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x5c0894d9 Device Boot Start End Blocks Id System /dev/sdb1 * 1 9 72261 e W95 FAT16 (LBA) /dev/sdb2 10 103 755055 83 Linux [root@host]# 

所以基本上我的FAT分区是70 MB左右,ext2分区是740MB左右,其余的空间(〜7 GB)是未分配的。 现在,当我的USB硬盘驱动器通过:

 dd if=/dev/sdb of=myimage.img bs=1M 

输出文件(myimage.img)大约是8GB,这是dd的正常操作。

问题:我正在寻找的是直接克隆我的USB硬盘驱动器的方式没有未分配的空间,以便我的结果文件大约1 GB 未压缩,而不是8 GB。 我问的原因是因为模拟器程序正在使用输出文件(myimage.img)来启动映像。 模拟器可以处理8 GB的文件,但我不想浪费我的磁盘空间。

    如果我理解正确,你想创build一个从磁盘开始到最后一个分区结束的映像。

    dd的参数是count= 。 您的最后一个分区在103上结束,您的单元大小为8225280字节(根据fdisk -l输出)。 所以你可以简单的修改你的命令:

     dd if=/dev/sdb of=myimage.img bs=8225280 count=103 

    不过,我会build议你运行fdisk -u -l /dev/sdb 。 现在这个年代的钢瓶并不是真的有意义,所以如果你看到钢pipe部门的数量来避免任何的四舍五入错误,那么你的生意会更好。 那么你将不得不运行:

     dd if=/dev/sdb of=myimage.img count=... 

    其中计数将设置为您从fdisk -u -l获得的数字作为最后一个分区的末尾,而不是以前的数字.103的默认块大小是512字节,这也是fdisk -u -l的单位fdisk -u -l将在输出中使用。

    GPT分区的备份分区表存储在磁盘的末尾,但由于您没有使用GPT,因此您可以正常使用。

    你只需要告诉dd只读取你感兴趣的驱动器的一部分。你正在寻找的参数是count

    所以把你的圆柱体大小为8,225,280,并乘以使用的圆柱体数量103,得到847,203,840个字节。 由于您使用的是一兆字节块大小,请将该字节转换为808的兆字节。

    所以你的命令是dd if=... of=... bs=1M count=808