令我惊讶的是,我能够完美地恢复ddrescue
在 RPi 中使用了很长时间的 SD 卡。但当我扫描 SD 卡时,badblocks -nvs
坏块以疯狂的速度列出。(顺便说一句,在启动救援操作之前,RPi 的行为相当不稳定。)
谁能向我解释一下,为什么ddrescue
能够顺利恢复所有内容,同时又badblocks
对我大喊“这张 SD 卡坏了”?
答案1
badblocks
寻找区域(区块/扇区) 出现故障的磁盘 (有读错误);其中包括仍然可读的区域(但可能需要多次读取尝试;例如,正在损坏/濒临死亡),
ddrescue
但预计可以恢复数据,因此允许重新读取扇区(忽略读取错误--max-error-count
)除非达到定义...
即这两种工具具有非常不同的意图/用途。
ddrescue
会很乐意重试,直到--max-error-count
达到已经规定的目标……其中正在badblocks
寻找失败的块,因此读取错误计数为 1 是坏的新闻在其代码中,因为它是一个先发制人工具用于检测可能发生故障的介质。具有更高“酒吧ddrescue
' 比故意使用时忽略它得到的任何“错误”要好。
您的选择是
- 在另一台设备上测试该卡,以确保您没有不太理想的读卡器等。
这张卡可能有问题,或者用于读卡的硬件存在某种问题(甚至可能是电源,因为即使是好的组件在供电不良时也会出现故障)