使用 Clonezilla 将具有待处理扇区的磁盘克隆到新驱动器-rescue
,然后将刚克隆的磁盘作为 USB 驱动器插入工作系统(我有一个 USB 转 SATA 底座)并运行chkdsk
。
在只读模式下,chkdsk
未发现任何错误。使用/B
,chkdsk
清理了一些实例标记、未使用的索引条目,并更正了 MFT 和卷位图中标记为已分配的可用空间。
正是最后一点让我担心。Clonezilla 报告称无法读取几个扇区,并且“丢失了数据”。我猜想这些扇区变成了标记为已分配的可用空间,这些chkdsk
空间已被清理。但我找不到任何文件据称使用了已分配的空间,所以我不知道该从在线备份中恢复什么。
有没有工具可以告诉我坏扇区被分配到了哪些文件?也许我可以在原始驱动器上以只读方式运行它?
答案1
这个问题是几个月前提出的,我希望你在此期间找到了合适的答案。不过,这是我最近在1TB 硬盘故障有人把它交给我,希望我能“让他开口”,并且不用花大价钱就能恢复尽可能多的数据!:^p 事实证明,我成功地恢复了他的大部分个人文件,这些文件位于一个受到臭名昭著的“死亡点击”影响的硬盘驱动器上:只有大约 125 个文件被无法恢复的扇区损坏,我用这种方法识别了这些扇区,而且由于大多数文件被复制了一次或多次,我可以恢复或修复其中的大部分文件(使用 DoubleKiller Pro 的仅大小模式来检测重复项 - 在某些情况下,位于不同位置的 2 或 3 个通常相同的文件有损坏的部分,这些部分是不同的和互补的,因此我可以使用 WinHex 重新生成原始文件,这对一个“业余爱好者”来说是一种高级的东西),因此只有大约 20 个文件仍然部分或全部损坏。(我只花了 50 欧元就做到了!O_o 哦,好吧,至少这是有教育意义的……)
– 使用 ddrescue 和日志文件/映射文件恢复原始存储单元。
ddrescue [options] [input drive or partition] [image file or volume] [logfile]
– 一旦恢复完成,由于几乎可以肯定这是 NTFS 分区,请运行ddru_ntfsfindbad,包括在 dd实用程序,使用输出图像或卷和日志文件/映射文件作为输入。该工具将分析日志文件/映射文件(现在称为“mapfile”,以前称为“logfile”),它指示哪些区域尚未恢复,并将其与 MFT 中找到的信息进行比较。它进行得非常快(花了 2 分钟分析 919GB 分区),并生成受影响文件的列表,其中包含错误的确切大小。当然,它要求 MFT 已完全恢复才能正常工作(它通常位于卷的开头,在我的情况下,前 165GB 左右的恢复没有错误,因此它给出了可靠的结果)。
ddru_ntfsfindbad [-V] -i [partition offset] [ddrescue output] [ddrescue mapfile]
以下是我获得的列表摘录(使用 TEDNotepad 编辑):
name=./Users/titi/Desktop/Documents/Films/Clones.avi errors=0006 errorsize=163549184 FILE inode=4942
name=./Users/titi/Desktop/Documents/Films/Cloud Chasers Les Traqueurs de Tempêtes.avi errors=0005 errorsize=160069632 FILE inode=91564
name=./Users/titi/Desktop/Documents/Films/Contagion.avi errors=0003 errorsize=173576192 FILE inode=3410
name=./Users/titi/Desktop/Documents/Films/Fast and Furious 5.avi errors=0003 errorsize=163557376 FILE inode=5076
name=./Users/titi/Desktop/Documents/Films/Green Lantern.avi errors=0003 errorsize=163553280 FILE inode=13740
name=./Users/titi/Desktop/Documents/Films/Numéro 4.avi errors=0003 errorsize=163553280 FILE inode=5252
name=./Users/titi/Desktop/Documents/mes chiens/MapsAppList.targetsize-48.png errors=0001 errorsize=000551 FILE inode=301935
name=./Users/titi/Desktop/Documents/mes escargots/Recette d'Escargots à la catalane_files/430(2) errors=0001 errorsize=035793 FILE inode=84109
name=./Users/titi/Desktop/Documents/mes escargots/Recette d'Escargots à la catalane_files/430(3) errors=0002 errorsize=032768 FILE inode=84118
name=./Users/titi/Desktop/Documents/mes escargots/Recette d'Escargots à la catalane_files/430(5) errors=0001 errorsize=036864 FILE inode=84745
答案2
另一种可行的方法是,如果 Clonezilla(或任何其他映像软件)为您提供了坏扇区 LBA 的完整列表:使用 Microsoft 的 nfi.exe 工具。这是一个非常小的命令行工具,可以解析 MFT 并提供给定文件占用的扇区列表(如果您输入文件路径名),或者查找与给定扇区相对应的文件。
还有一种可能性:一些碎片整理程序会显示与您用鼠标指针悬停的块相关的文件。(虽然不太准确,但更方便。)
还有另一种可能性:R-Studio 包含一个十六进制分析器(和基本编辑器)。对于它检测到并显示在恢复树中的每个文件,您可以右键单击以打开十六进制分析器,然后在“数据解释器角落”中单击“扇区”选项卡,然后,您就会得到已占用扇区的列表。要仅获取第一个扇区的编号,请单击“属性”选项卡并阅读最后一行。
R-Studio 的另一个高级技巧:在给定分区的恢复树选项卡中(可以是原始分区的克隆,也可以是图像文件),单击“文件”,然后单击“在 HexEditor 中显示文件”:这将创建卷的完整十六进制表示,其中包含所有相关文件名(对于大卷,可能需要一些时间),然后您可以使用它来查找与给定扇区关联的文件。为此,返回“设备视图”常规选项卡(打开 R-Studio 时显示的选项卡,其中列出了可用的卷),右键单击您尝试从中恢复的卷(整个卷,而不是单个分区),然后单击“查看/编辑”以显示十六进制表示;在这里,您可以在上方工具栏中间的空白字段中输入扇区号或偏移值。但它有一个小错误或不便之处:根据我的经验(使用 R-Studio 8.0),要显示内容对于给定文件,您必须输入逻辑相对于所在分区的扇区号(所选文件的单个十六进制视图中“属性”选项卡最后一行显示的数字),但要获取姓名对于与给定扇区关联的文件(或有时是文件,当存在硬链接时,或者当文件在文件系统中被识别并且作为原始文件出现在“额外找到的文件”中时),您必须输入绝对扇区号,相对于整个卷,因此您必须添加分区的扇区偏移量。例如,我分析了一个 3TB 的硬盘,其中有一个分区从偏移量 135266304(129MB)开始,因此,为了显示与逻辑扇区 1000000 关联的文件的名称,我必须添加 135266304 / 512 = 264192,然后输入值 1264192(但显示的内容不匹配,文件的实际内容确实会显示在扇区 1000000)。
WinHex 还可以分析 NTFS 分区(也可能是其他文件系统,虽然从未尝试过但应该可以),或者整个卷的图像(前提是您通过在“打开”菜单中选择正确的类型来打开它 - 通常“所有类型的图像”都可以),并且对于任何给定位置,它将显示关联文件的名称,或指示它是否被注册为可用空间。
不过,我不知道在坏扇区被重新分配后,是否有可能获得坏扇区的列表。那时,硬盘会“透明地”(或者应该说“模糊地”)将它们呈现给系统,就好像它们是按顺序排列的原始扇区一样,而据我所知,原始扇区将永远消失。(有人可以用这个东西创作一首歌,不幸的是,在 2017 年,它可能会成为热门歌曲!)