如何将整个磁盘克隆到更大的磁盘然后卸载?

如何将整个磁盘克隆到更大的磁盘然后卸载?

我所做的是克隆一个具有三个分区的小型 32GB 闪存模块。我碰巧有一个 32GB USB,所以我想可能只是工作;它没。东芝的 32GB 似乎与 Sandisk 的 32GB 有点不同。

无论如何,然后使用 2TB 外部驱动器并做了完全相同的事情。具体来说,我做了以下事情:

dd if=/dev/sdX of=/dev/sdY bs=100M

在旁边最后一个块是否作为部分副本出现,或者如果首先到达 EOF,它会被删除吗?

从而从本质上克隆整个闪存模块——分区表等。 32GB -> 2TB 很容易,因为dd实用程序在读完最后一个(第三个)分区的末尾后正确停止。

因此,我现在要做的只是创建一个包含整个 Flash 图像的简单二进制 blob。我的 2TB 驱动器现在与原始驱动器进行了相同的分区:sdx1, sdx2, sdx3。因此,我再次采取dd以下措施:

dd if=/dev/sdx of=firmware.bin bs=100M

这样做不仅会复制我感兴趣的第一个 32GB,而且还会继续克隆整个 2TB 驱动器,或者我尝试时是这样。我可以通过以下方式找到感兴趣的分区的确切字节长度:

$ lsblk -b
NAME                         MAJ:MIN RM          SIZE RO TYPE  MOUNTPOINT
sdc                            8:32   0 2000398933504  0 disk  
├─sdc1                         8:33   0     134217728  0 part  
├─sdc2                         8:34   0    2147483648  0 part  
└─sdc3                         8:35   0   29734297600  0 part  

解决这个问题的一个明确方法是将块大小设置dd为一个字节,然后将要读取的块数设置为上述三个大小的总和:

dd if=/dev/sdc of=firmware.bin bs=1 count=32015998976

但我无法想象这实际上需要多长时间。

编辑:对上述内容进行的好奇快速测试显示出可靠的约 150KB/s 的传输速率。


太长了;博士如何独占复制比分区大小总和大得多的磁盘的前三个分区?

答案1

只需复制您需要的分区和 MBR(如果您也需要)。

MBR 存储在磁盘的前 512 字节中。

dd if=/dev/sdX of=/path/to/mbr_file.img bs=512 count=1

复制每个分区

dd if=/dev/sdX1 of=/path/to/partition1.img bs=512

dd if=/dev/sdX2 of=/path/to/partition2.img bs=512

dd if=/dev/sdX3 of=/path/to/partition3.img bs=512

相关内容