我正在尝试克隆一张 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卡,检查设备名称(通常为mmcblkX
或sdcX
):
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 的回复启发):
- 通过读卡器插入微型 SD 卡。
- 打开磁盘应用程序。
- 快速格式化整张卡(而不是特定的分区)。
- 关闭磁盘。
打开终端并执行:
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 上)。确保不要被任何会调用挂载的操作打断(打开文件或磁盘应用程序)。
谢谢大家的回答。