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

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

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

 sudo fdisk -l 

在我的情况下,SD卡是/dev/mmsbkl0 。 现在您必须卸载设备:

 sudo umount /dev/mmcblk0 

现在创建设备的图像:

 sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img 

这需要一段时间。

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

 sudo fdisk -l sudo umount /dev/mmcblk0 

将图像写入设备:

 sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0 

写操作比以前慢得多。

我正在使用dd工具克隆带有多个分区的usb棒,这是我的命令:

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

notrunc – 不截断输出文件
noerror – 读取错误后继续

dd很好,但我更喜欢cat /dev/sdc/ > ~/backup.iso如果你想再把它放在SD卡上,只需运行cat ~/backup.iso > /dev/sdc

以下是在Ubuntu上为我恢复图像文件(在我的情况下为~/raspberrypi2.img )恢复到新SD卡的步骤(受到Alon上面的回复的激励):

  1. 通过读卡器插入micro 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上)。 确保不会通过任何调用挂载 (打开文件或磁盘应用程序)的操作来中断它

谢谢大家的回答。

Interesting Posts