我有一张 SD 卡,运行良好,还有 ubuntu 23.04,dd 不能完全镜像磁盘映像。例如:
预期的:
$ dd if=/dev/zero of=/dev/sdb
$ strings /dev/sdb
$
实际的:
$ dd if=/dev/zero of=/dev/sdb
$ strings /dev/sdb
#random text, a lot
我如何确保我的数据(不是 /dev/zero)将被正确写入?
答案1
尝试这个:
dd if=source of=/dev/sdb bs=1M status=progress conv=fsync
conv=fsync 的作用:
即使存在写入错误,也要在完成之前同步输出数据和元数据。
如果复制块级设备,请使用 验证它们是否相同cmp
。
cmp /dev/sda /dev/sdb
cmp-逐字节比较两个文件
答案2
显然它不能正常工作,否则您将能够写入所有扇区。由于目标驱动器似乎无错误地丢弃了写入命令,因此它不可信任,应予以更换。
不幸的是,这是廉价 SD 卡和 USB 闪存盘的常见问题。不仅这些设备中使用的 NAND 质量很差,而且固件质量也很差,因为当固件无法写入任何特定 LBA 地址时,您会预料到固件会抛出错误。
在您的案例中,由于没有错误,目标驱动器接受了写入,无法写入并默默地让它通过。它要么根本就没有检测到问题(这很糟糕),要么检测到但没有通知(这也很糟糕)。