一位不懂电脑的家庭成员要求我从她相机中使用的 SD 卡中恢复照片。当电脑通知她设备需要格式化时,她去取它们。她发誓她没有继续使用该格式,并问我是否知道如何修复它。
我使用我喜欢的 Knoppix 启动 CD,因为它预先捆绑了 ddrescue 和其他工具。将卡插入我的内置读卡器,它识别出 /dev/sdc 下的设备,但它没有自动安装。
我运行了命令
ddrescue -d /dev/sdc /media/sdb1/test.img /media/sdb1/testimage.log
输出表明它运行得很好。它成功读取了所有 16GB 并报告了 0 个错误。然而,当我在十六进制编辑器中打开 img 文件时,它是 16GB 的零。我不确定 ddrescue 是否在每次读取尝试时都默默失败并只写了一个零,所以我也尝试了普通的 dd 并得到了相同的结果。
卡上的一切看起来都很好,显然只是空的。通常,当这些卡上的内存控制器开始变坏时,我习惯于它们错误报告内存大小或存在坏扇区,但在这里,这一切看起来就像是一张快乐的出厂新鲜 SD 卡。
当然,她是技术文盲,所以我不能排除她不小心把东西填零的可能性,但我想如果有什么的话,她会不小心快速格式化它并吹掉分区表,使地址处的字节完好无损。
是否有什么我可能遗漏或做错的地方,或者该卡刚刚完全被冲洗?
答案1
我假设您的 Linux 系统能够读取工作的 SD 卡。
当您插入一张未格式化的卡(包括 100% 零(即完全空白)的卡)时,您希望看到的 Windows 消息是“设备需要格式化”。
数据丢失。
如果 SD 卡上的闪存重新映射表已重置为全部未分配(例如blkdiscard
在整个设备上使用 Linux 命令),您将看到以下内容。 (blkdiscard
命令往往适用于内部 PCI 读卡器,我认为它往往不适用于 USB 读卡器)。
如果您想要随机猜测,我认为这更可能是控制器仍在运行的故障,但由于某种原因无法加载重新映射表。在这种情况下,您将无法写入卡/写入内容将悄无声息地丢失。
我不认为这是由于故意丢弃命令造成的,因为我很少听说过那些在 SD 卡上使用的命令。
如果 SD 卡决定自行重置并擦除所有映射表,我会感到惊讶。请注意,全设备blkdiscard
命令对我来说需要一段时间。至少,没有理由将其设计为自动重置。