如何查找特定坏扇区中是否有文件?

如何查找特定坏扇区中是否有文件?

我使用 Clonezilla 选项克隆了故障硬盘--rescue,结果列出了许多坏扇区。一些坏扇区是 3194529280、3194529792、3194530304、3194530816。我如何找出这些坏扇区中是否存在文件?

我期待这样的答案

> whichfileisatsector.exe 3194529280
c:\Users\Chloe\Pictures\cat.jpg

我看到一个博客提到了nfi.exe微软的链接,但它不再可用并且链接已失效。

Windows 8.1

答案1

– 您可以在这里找到 nfi.exe:
http://www.jumpjet.info/Application-Software/Windows/win2k.htm
下载“oem3sr2.zip”,它就在那里。命令是:

nfi X: [sector number]
(Replace "X:" with the relevant drive letter.)

如果您未指定扇区号,您还可以获取给定分区上所有文件的完整列表:

nfi X: >"D:\nfi listing.txt"
(Replace "X:" with the relevant drive letter. Adjust the name/path of the output file.)

(如果分析的分区上有很多文件,则生成的文本文件可能会很大。对于我目前正在处理的 3TB 硬盘,它提取了一个 425MB 的列表文件。)

– Windows(至少是 Windows 7)自带的 fsutil 工具也可以提供此功能,以及其他各种功能。命令为:

fsutil volume querycluster X: [cluster number]
(Replace "X:" with the relevant drive letter.)

这里的输入必须以簇为单位,因此您必须将扇区号除以每个簇的扇区数,对于常见的 4KB 簇大小,通常为 8。结果的呈现比 nfi.exe 更简化,如果文件有许多片段,这可能会造成混淆(显然,单个文件可以在 MFT 中显示为多个文件编号,而 nfi 只显示其中一部分,我还不太明白它是如何工作的);此外,它可以给出简称而不是全名,因此需要额外的步骤才能确定地识别该文件(例如,我在一个全是视频文件的文件夹中得到了“2017_0~3.MP4”,其全名以“2017_0”开头)。使用 fsutil,您只需一行即可可靠地提供所需的信息:

Cluster 0x000000001ec1ba42 utilisé par ----D \fichiers corrompus\2017_07_2122_49 - Arte - 101 - Depeche Mode.mp4::$DATA

(簇号总是以十六进制格式显示,但你可以以十进制格式输入;在这里,我请求了簇 516012610。它是法语的,因为我在法国!:^p)
使用这两种工具,你必须提供逻辑扇区或簇号来获得正确的结果,因此如果 Clonezilla 给你一个列表绝对或者身体的扇区号(可能确实如此,尽管我还没有尝试过,因为克隆软件的设计目的是复制所有内容而不考虑分区方案)您必须删除分区的偏移量。例如,对于我正在处理的 3TB 硬盘,只有一个分区从扇区 264192 开始,因此如果我有坏扇区的绝对编号(例如由 HD Sentinel 提供 - 见下文),假设为 4128365072,并且想知道它属于哪个文件,我必须使用 nfi.exe 输入 4128365072 - 264192 = 4128100880,使用 fsutil 输入 4128100880 / 8 = 516012610。

我知道的其他可以提供此类信息的工具有:

– Hard Disk Sentinel(不是免费的,但它是我所知道的用于硬盘健康评估目的的最佳软件)提供绝对或物理扇区号(相对于完整的物理设备而不是给定的分区)。当您运行表面扫描时,单击给定的块,它将显示该块的第一个扇区的十六进制表示,然后您可以通过单击“转到”转到任何其他扇区(您还必须指定绝对扇区号),如果您单击“检测扇区的文件信息”框,它将显示哪个文件占用该扇区,以及同一文件占用的扇区的完整列表。但它有一个警告:它将尝试以这种方式实际读取每个请求的扇区(以显示其内容),这可能会不必要地强调已经损坏的区域并扩大它,而不会像克隆软件尝试做的那样恢复任何东西。(我有一个类似的问题要处理现在;在我尝试这种方法的情况下,坏扇区的数量增加了,尽管我尝试通过访问附近的扇区来识别受影响的文件,而不是直接请求已经识别为坏的文件)。

– Recuva 在“信息”选项卡中提供了每个文件的逻辑簇号列表。它不会直接满足您的需要:它提供了给定文件占用的簇列表,但无法找到哪个文件位于哪个扇区。不过,Recuva 的这个鲜为人知的功能可以与上述工具结合使用:一旦您知道哪个文件占用了给定的坏扇区,了解该文件还占用了哪些扇区会很有用,例如,查看它是按顺序记录的还是严重碎片化的(在我的情况下,几个受影响的文件严重碎片化,因此我无法像我最初打算的那样,在没有文件系统信息的情况下从相关扇区范围的部分 ddrescue 恢复中提取它们)。
确保运行快速扫描(默认方法),这足以解析 MFT 并获取当前分配文件的索引,如果损坏区域位于更远的地方,它不会通过完全解析硬盘来给硬盘带来压力(就像我的情况一样:所有坏扇区都在 2TB 左右)。如果包含坏扇区的文件足够大,并且坏扇区不在开头,则应该是无害的,但是对于小文件或如果坏扇区恰好在开头,只需单击它们以获取它们占用的簇列表可能会增加损坏,因为 Recuva 将尝试显示预览或至少显示标题。

– Piriform 的 Defraggler(与开发 Recuva 的公司相同):单击卷图上的某个块时,它将显示包含在同一个块中的文件列表(甚至非碎片文件)。单击“文件列表”选项卡中的文件名时(仅显示碎片文件),它将突出显示包含至少一个属于该文件的扇区的所有块。遗憾的是,没有偏移/扇区/簇间隔的数字指示。(我写信给他们,要求进行一些改进,使这个很棒的功能更实用。)

– R-Studio(也不是免费的,但它是我用过的最好的恢复软件之一)可以显示恢复树中任何文件占用的扇区(即使是“额外找到的文件”中的扇区,这些扇区当前未分配,但根据其页眉/页脚结构进行划分)通过打开十六进制查看器并单击“扇区”选项卡 - 但目前不提供导出该列表的方法(您可以使用 CTRL+C 逐个复制值,但不能全部选择;使用 Recuva 或 HD Sentinel 可以复制整个列表以供进一步调查)。
您还可以使用此方法识别给定扇区上的文件:
1)在恢复树中,单击文件 => “在 HexEditor 中显示文件”。
2) 然后返回设备视图选项卡,右键单击您正在检查的卷,然后单击“查看/编辑”:这将打开 HexEditor(它更像是一个十六进制查看器,默认情况下它处于只读模式,因为它应该用于数据恢复目的)。在这里,您可以键入扇区号并显示它,以及获取它所属文件的名称。但是有一个不一致之处:要显示扇区的内容,您必须键入其逻辑号码,但要获取其所属文件的名称,您必须输入其绝对号码,添加或删除分区偏移量。
同样,在硬盘出现故障(硬件故障)的情况下,这种方法是有风险的,因为软件会尝试访问有缺陷的扇区。

– 使用 ddru_ntfsfindbad(ddr_utility 工具集中的一个工具),您可以获得占用 ddrescue(专门用于从故障存储单元恢复数据的命令行克隆程序)无法读取的扇区的文件列表。它与 ddrescue 生成的日志文件一起工作。在这种情况下,您已经使用 Clonezilla 克隆了故障 HDD,但如果只有几个坏扇区,仍然可以从模板创建自定义日志文件,而不必重新进行克隆过程。它的优点是可以提供详细信息,最值得注意的是每个受影响文件的损坏数据的大小。但它在 Linux 上运行,这是另一个警告,所以它不是您情况下最简单的解决方案,但它可能会帮助其他实际使用 ddrescue 进行恢复的人。

相关内容