在 Linux 系统下克隆 SD 卡或 NAND 存储设备(如嵌入式设备的闪存),通常可以使用 dd
命令或其他工具。以下是详细步骤和注意事项:
dd
命令(基础方法)dd
是 Linux 下最常用的克隆工具,但需谨慎操作(避免写错目标设备)。
插入 SD 卡/NAND 设备
将源设备(要克隆的 SD 卡/NAND)和目标设备(空白的 SD 卡/NAND)插入 Linux 主机。
确认设备标识符
使用 lsblk
或 fdisk -l
确认设备路径(如 /dev/sdX
或 /dev/mmcblkX
)。
例如:
sudo sync
ddrescue
(处理坏块或错误)如果源设备有坏块或读取困难,可以用 ddrescue
(需安装):
sudo apt install gddrescue # Debian/Ubuntusudo ddrescue -v -r 3 /dev/sdX /dev/sdY mapfile.log
-r 3
: 重试 3 次读取坏块。
mapfile.log
: 保存克隆日志。
cat
命令(替代 dd
)如果 dd
不可用,可以用 cat
直接复制数据流:
sudo cat /dev/sdX > /dev/sdY
操作后同样需要 sync
。
适合不熟悉命令行的用户:
安装 GNOME Disks:
sudo apt install gnome-disk-utility # Debian/Ubuntu
打开应用,选择源设备,点击齿轮图标 → Create Disk Image 备份为镜像文件。
插入目标设备,选择 Restore Disk Image 将镜像写入目标设备。
如果不需要直接克隆到物理设备,可以先备份为镜像文件:
sudo dd if=/dev/sdX of=backup.img bs=4M status=progress
之后可将镜像写入其他设备:
sudo dd if=backup.img of=/dev/sdY bs=4M status=progress
目标设备容量
目标设备必须等于或大于源设备容量。
数据安全
操作前确保目标设备无重要数据(克隆过程会覆盖所有数据)。
仔细检查 if
(输入)和 of
(输出)参数,避免误操作。
NAND 设备的特殊处理
部分嵌入式设备的 NAND 可能需要专用工具(如 nanddump
和 nandwrite
):
sudo parted /dev/sdY resizepart 1 100% # 扩展分区sudo resize2fs /dev/sdY1 # 调整文件系统(ext4)
比较源设备和目标设备的哈希值:
sudo fdisk -l /dev/sdYsudo fsck /dev/sdY1
通过以上方法,你可以安全地克隆 SD 卡或 NAND 设备。务必谨慎操作,避免选错设备路径!
sudo fdisk -l
源设备可能是 /dev/sdb
,目标设备可能是 /dev/sdc
。
卸载设备
确保所有分区未被挂载:
sudo umount /dev/sdX* # 替换为实际设备标识符
执行克隆
使用 dd
克隆整个设备(包括分区表和所有数据):
sudo dd if=/dev/sdX of=/dev/sdY bs=4M status=progress
if=/dev/sdX
: 输入设备(源设备,如 SD 卡)。
of=/dev/sdY
: 输出设备(目标设备)。
bs=4M
: 块大小(提高速度)。
status=progress
: 显示进度(仅限较新版本 dd
)。
同步并检查
克隆完成后,强制写入缓存:
sudo nanddump -f backup.img /dev/mtd0 # 备份sudo nandwrite -p /dev/mtd0 backup.img # 写入
克隆后扩展分区(可选)
如果目标设备比源设备大,可能需要调整分区大小:
sudo sha256sum /dev/sdXsudo sha256sum /dev/sdY
检查目标设备文件系统和分区表:
sudo fdisk -l /dev/sdYsudo fsck /dev/sdY1通过以上方法,你可以安全地克隆 SD 卡或 NAND 设备。务必谨慎操作,避免选错设备路径!
上一篇:SD卡解密方法