使用 dd 命令克隆 SD 卡

使用 dd 命令克隆 SD 卡

我正在尝试克隆一张 SD 卡,该卡可能包含多个分区,其中一些分区 Ubuntu 无法识别。通常,我想克隆整个卷,而不仅仅是某个分区。因此,我挂载了 SD 卡并在日志查看器中看到类似以下内容:

kernel: [  262.025221]  sdc: sdc1 sdc2

alex@u120432:~$ ls /dev/sdc*
/dev/sdc  /dev/sdc1  /dev/sdc2

因为我想复制整个磁盘,所以我执行:

dd if=/dev/sdc of=sdimage.img bs=4M

创建了文件 sdimage.img,大小为 7.9 GB (7,944,011,776 字节)(SD 卡为 8 GB)。现在我安装另一张 SD 卡并执行:

dd if=sdimage.img of=/dev/sdc bs=4M

问题是第二个 dd 命令在某个阶段挂起,并且从未成功。此后,我无法重新启动或关闭计算机,我只需要关闭电源。

这是正确的方法吗?也许还有其他方法可以克隆 SD 卡?

操作系统:Ubuntu 12.04(精准穿山甲),32 位。

答案1

插入原装SD卡,检查设备名称(通常为mmcblkXsdcX):

sudo fdisk -l

你可能会看到:

Device         Boot   Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *       2048  2099199  2097152    1G  c W95 FAT32 (LBA)
/dev/mmcblk0p2      2099200 31116287 29017088 13.9G 83 Linux

就我而言,SD 卡是/dev/mmcblk0(和*p1*p2分区)。

现在您必须卸载该设备:

sudo umount /dev/mmcblk0

现在创建设备的图像:

sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=1M status=progress

这将需要一段时间。

完成后,插入空的 SD 卡。如果设备不同(USB 或其他类型的 SD 卡读卡器),请验证其名称并确保将其卸载:

sudo fdisk -l
sudo umount /dev/mmcblk0

将图像写入设备:

sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0 bs=1M status=progress

写入操作比以前慢很多。

答案2

您不应该在已安装的设备上使用 dd。先卸载所有分区,然后您的命令就可以工作了。

答案3

我正在使用 dd 工具来克隆具有多个分区的 USB 驱动器,这是我的命令:

sudo dd if=/dev/sdb of=/dev/sdc bs=4096 conv=notrunc,noerror

诺特伦克- 不要截断输出文件
无错误- 读取错误后继续

答案4

以下是我在 Ubuntu 上操作的步骤恢复将图像文件(~/raspberrypi2.img就我而言)恢复到新的 SD 卡(深受上述 Alon 的回复启发):

  1. 通过读卡器插入微型 SD 卡。
  2. 打开磁盘应用程序。
  3. 快速格式化整张卡(而不是特定的分区)。
  4. 关闭磁盘。
  5. 打开终端并执行:

    sudo fdisk -l
    

相关输出(显示由于快速格式化了整张卡,所以没有分区):

Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 
Disk identifier: 0x6957f2f2

sudo dd if=~/raspberrypi2.img of=/dev/sdb

此步骤需要几分钟(即使在 USB3 上)。确保不要被任何会调用挂载的操作打断(打开文件或磁盘应用程序)。

谢谢大家的回答。

相关内容