将已删除的文件标记为未删除

将已删除的文件标记为未删除

我的硬盘容量为 500 GiB。150 GB 的数据被意外删除。发生该事件后,我没有向硬盘写入任何字节,因此我的数据肯定还在那里。我尝试过 Recuva 等应用程序,所有应用程序都显示数据在那里,并允许我将数据保存在其他位置,但问题是我不想这样做。

我只是希望文件在 MFT 中再次被标记为未删除。是否有可用于此目的的应用程序?我搜索了很多,但没有找到任何东西,是否有可能取消标记文件在 MFT 中为已删除,或者我遗漏了什么?如果我知道如何手动执行此操作,我可以为此编写一个应用程序。

答案1

恢复删除的文件NTFS卷并不像翻转一位那么简单。确实,已删除文件和未删除文件之间的区别仅在 MFT 中的一位,但还需要恢复文件的内容(以流的形式存储),以及重新标记已删除的扇区,如 $Bitmap 伪文件中使用的那样,该文件包含每个扇区一位,每位表示其对应的簇是已使用(已分配)还是空闲(可供分配)。

这项工作非常复杂,所有恢复工具都不愿意写入损坏的卷。例如,如果某个扇区已被另一个文件使用,则将 $Bitmap 中的某个扇区标记为已使用可能会导致交叉链接。

这篇文章通过十六进制转储很好地演示了这个问题:
Windows“文件恢复”系列:第 5 部分从 NTFS 文件系统手动恢复已删除的文件

另一篇文章甚至包含一个程序的源代码,可以修改该程序以取消翻转“已删除”的位: 恢复 NTFS 中的文件

有不少 NTFS 磁盘编辑器可以编辑 MFT 来翻转该位。我通过 Google 找到的一些编辑器(但幸运的是从未用过)如下:
六、WinHex
NTFS 数据恢复工具包
二甲醚
免费软件活动磁盘编辑器

一个可能有效的解决方案是撤消 MFT 中删除的位,然后使用 chkdsk 实用程序尝试恢复内容。此实用程序可以恢复那些扇区被错误标记为可重新分配的文件的扇区链,并修复 $Bitmap。

然而,此过程始终有可能损坏您的磁盘。

这就是为什么你和上面的所有评论者(包括我自己)没有找到任何可以进行就地恢复的产品。对于任何不是在 NTFS 上工作的 Microsoft 员工的人来说,搞砸磁盘的可能性实在太大了。

我给您的最佳建议是购买第二块硬盘并恢复其中的文件。我相信您已经发现一个备份磁盘是不够的。我已经遇到过好几个朋友要求我恢复他们唯一的备份的情况,我总是建议他们(有时为时已晚)准备两个备份磁盘。

此外,至少应将两个备份磁盘中的一个从计算机上断开。我建议这样做,是因为听说有一次计算机自己和所有连接的 USB 设备都烧坏了,导致用户数据和备份都丢失。

答案2

喜欢我昨天说过,如果只有几个文件需要恢复,您可以尝试使用十六进制/磁盘编辑器手动执行此操作,但我绝对不推荐这样做。

经过几分钟研究经过测试,我最终设法在 中将文件标记为未删除$MFT,但问题是这还不够,您还必须在 中将其使用的簇标记为正在使用$BITMAP。这项任务太难了,要找到并完成这项工作需要做太多工作,所以我最终放弃了。我考虑运行它chkdsk /f以查看它是否能检测到差异并正确标记簇,但这样做感觉风险太大,因为我测试的 NTFS 分区上还有一些我不想丢失的文件。

(另外,请注意,虽然与 FAT* 不同,NTFS 将文件的簇链存储在 中$MFT,但这并不能保证您在恢复时可以访问整个簇链,因此碎片文件最终可能无法恢复。即使您在意外擦除后没有向驱动器写入任何内容,也不意味着 Windows 没有。例如,它可能已写入\System Volume Information,特别是如果卷影复制/Previous Versions 服务正在运行。)

显然,手动恢复并不是真正的解决方案,也不是您问题的答案,这就是我将其仅作为评论发布的原因。遗憾的是,我所做的所有搜索都一无所获,对您问题的简短回答是:不,没有公共程序可以简单地将 NTFS 卷上的文件标记为未删除

(有一些昂贵的取证程序可以对驱动器做一些奇怪的事情,恢复文件并通过过滤器呈现原始数据来显示结构等,但即使这些也无济于事,因为它们特别强调不修改原始驱动器。)

相关内容