经过不幸的 CHKDSK 分析损坏了 3TB HDD 上的许多文件(错误地检测为 746 GB,可能是因为 USB2 控制器与 2TB 以上的容量不兼容),我想对这些文件进行精确比较(与备份硬盘上的正确对应文件),并提取损坏的区域以供进一步调查,然后再删除它们。
到目前为止,我是这样进行的:
- 在 WinHex 中打开文件的两个版本。激活“同步和比较”显示。
- 在偏移量 0 处运行比较,保存报告(使用此软件是强制性的,无法直接找到下一个差异)并指定文件名的限制,指定 10000 个错误(以避免报告太大)。
- 一旦停止(到达文件末尾或 10000 个不同字节的限制),请打开 TXT 报告,将第一个差异的偏移量复制到 WinHex 的“转到偏移量”菜单中。将第一个错误(始终位于扇区边界)标记为块的开头。
- 通过向下滚动来搜索损坏区域的末尾,或者如果花费的时间太长,则添加 1MB 或 100KB 直到我找到为止,然后向上滚动(我发现在 WinHex 中没有办法使此操作更简单)。将损坏区域的最后一个扇区的末尾标记为块的末尾。
- 将该块提取为一个新文件,其模式为“Name_of_the_file [1111-2222]”,其中“1111-2222”是起始和结束偏移量。
- 在先前确定的损坏区域的末尾恢复比较,以搜索其他区域,直到文件末尾......
现在,有没有办法让这个艰苦而耗时的过程自动化?有没有其他更适合文件比较的十六进制编辑器?或者我可以使用脚本一次性完成这一切?我发现了一个很棒的小命令行工具,叫做德斯福克(DS File Ops Kit)可以提取两个偏移值之间的数据块(以及其他我尚未测试的功能)。所以我需要另一个命令行工具来执行比较并获取这些偏移值,以及编写脚本以使这些工具协同工作的技巧。谢谢。