我遇到了硬盘故障,并设法使用 GNU 的ddrescue. 磁盘的最后 800GB 是完美的,没有一个错误,但在前 200GB 中几乎有 14000 个错误(坏块)分布在整个区域。ddrescue创建一个描述坏块位置的日志文件。
ddrescues 命令行参数:
ddrescue /dev/sdb /dev/sdd /mnt/sdc1/sdb.log -r -1 -f -d -v
Run Code Online (Sandbox Code Playgroud)
日志文件如下所示:
# pos size status
0x00000000 0x1C08CE00 +
0x1C08CE00 0x00000200 -
0x1C08D000 0x011E6800 +
0x1D273800 0x00000200 -
0x1D273A00 0x005EC000 +
0x1D85FA00 0x00000200 -
... ... ...
Run Code Online (Sandbox Code Playgroud)
加号 (+) 表示连续的好空格,减号 (-) 表示不可读的空格;位置和大小是十六进制的。对以“+”结尾的行进行条带化,我有一个包含坏块位置的列表,但我需要一种方法来将这些坏块与文件系统上的文件相关联,顺便说一下,就是 NTFS。
我知道我可以使用DiskExplorer 之类的工具来手动执行此操作,但是如果有 14000 个扇区,那就太糟糕了。那么,是否有一种或多或少自动和优雅的方式来做到这一点?