【问题标题】:Corrupt NTFS folder not accessible from either Windows, Mas OSX or Linux [closed]Windows、Mas OSX 或 Linux 都无法访问损坏的 NTFS 文件夹 [关闭]
【发布时间】:2016-09-29 03:02:33
【问题描述】:

我有一个外置 2TB 硬盘,其中包含大量来自 GoPro 和 Sony Handycam 的视频文件以及其他备份内容。最近,在尝试从我的 Mac 备份时(通过 OSXFUSE 使用了一些技巧以允许写入到目前为止一直为我工作的 NTFS 文件系统),我发现我的一个文件夹丢失了一些文件夹。我移除了外部 HD 并试图从 Ubuntu 中恢复它,但在 Ubuntu 中,我对内容的可见性更低。请参阅下面的屏幕截图。紫色的 2 个文件夹不再用作文件夹,并且它们的名称已缩短,它们应为“Navimag Ferry”和“Sony Hanicam”(Handycam 的错字)。

当我运行ls -al 时,我得到以下信息

在我看来,信息在那里是因为可用空间没有改变。

到目前为止,我已经尝试了以下方法:

sudo ntfsfix /dev/sda1

给出以下输出

Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sda1 was processed successfully.

sudo testdisk /dev/sda1

使用testdisk 我在analyse 中使用了quick search 函数,然后是deeper search,但都返回了Structure: Ok

另外我使用了undelete 函数但找不到丢失的文件或文件夹。

在我看来,数据和目录结构之间的链接丢失了,但我不确定如何才能恢复此链接。

有什么想法吗??

谢谢,

斯图。

【问题讨论】:

  • 这个问题是通过我怀疑的编程解决方案解决的。不知道为什么它被关闭为题外话?
  • 写了一个程序来执行恢复吗?
  • @AndreaLazzarotto,很抱歉耽搁了这么久,过去 6 个月一直在非洲旅行。是的,我确实编写了一个程序,但它是在一台计算机上,我丢弃并损坏了另一个 HD。对不起。

标签: ubuntu filesystems ntfs recovery data-recovery


【解决方案1】:

小免责声明/介绍

当元数据部分损坏时,我是a MSc thesis related to forensic NTFS reconstruction 的作者,也是我将在本答案后面提到的开源软件 RecuperaBit 的创建者。

发生了什么(可能)

紫色的 2 个文件夹不再用作文件夹,它们的名称已缩短

NTFS 文件记录(称为 MFT 条目)包含一些关键元素:

  • 标志 → 一些描述文件的位。特别是,一位对应于 “这是一个文件夹吗?” 问题,另一位对应于 “这是删除还是仍然分配?”
  • $FILE_NAME 属性 → 每个文件都有一个或多个文件名,因为 NTFS 与 DOS 8.3 名称兼容。
  • $STANDARD_INFORMATION 属性 → 这包含 MAC(修改、访问、创建)时间等等。

此外,每个目录都包含一个 $INDEX_ROOT 和可能的几个 $INDEX_ALLOCATION 属性,列出了子名称(但不包括 MAC 时间)。

根据您的输出,在我看来,这两个目录的 MFT 条目已丢失。您仍将它们视为 camera uploads 中的元素,因为它们存在于索引属性之一中,但是当系统尝试读取记录以显示日期时,它会失败。

NTFS 驱动程序可以像任何其他“普通”操作系统实用程序一样访问文件系统:它是自上而下的。破坏一个节点,你会丢失任何子树(基本上是那些目录的内容)。

这是高级数据恢复软件可以提供帮助的地方。

恢复文件

由于这是一个与编程相关的网站,我将简要说明您将如何编写一个能够读取缺少一些 MFT 条目的 NTFS 分区的软件:

  • 扫描整个驱动器,尝试将任何以FILE 开头的扇区对解析为有效的 MFT 条目(我在这里简化了一点)
  • 通过对任何节点执行以下操作来构建自下而上的树:
    • 读取父节点的id
    • 如果您有一个具有上述 id 的节点,请将子节点链接到父节点
    • 否则,在Lost Files 下创建一个Folder_<id> 目录并将子级链接到该目录
  • 读取您要恢复的每个文件的$DATA 属性并将它们复制到其他位置

有关文件系统重建算法技术的更多详细信息,请查看我上面链接的论文。

您可以尝试的工具

我在软件推荐网站上提到了一些程序in this answer。这些专门针对严重损坏的驱动器,它们包括:

  • DMDE(商业版,适用于 Windows,但有适用于 Linux 的控制台版本)
  • Restorer Ultimate(商业,适用于 Windows 和 OS X)
  • RecuperaBit(开源,基于 Python):它确实可以在 Linux 上运行,但它在 Windows 上的测试很少......就像 once。它也应该在 OS X 上运行。

基于我的(有偏见的)意见和my test results RecuperaBit 是最好的磁盘显示严重损坏的磁盘。您的文件略有损坏,但我想提供一个关于如何恢复两个特定文件夹的简要指导。

恢复这两个目录

首先,在磁盘上运行 RecuperaBit。我强烈建议在比特流副本上运行它,但它不会向其中写入任何内容,因此您可以尝试直接在设备上运行它:

mkdir /media/user/External/recovered_files
cd [full path of recuperabit]
pypy main.py /dev/sdb -o /media/user/External/recovered_files -s /media/user/External/savefile.save

这里我假设/dev/sdb 是损坏的驱动器,您希望将文件保存在另一个安装在/media/user/External 上的驱动器中。如果你直接在块设备上运行该工具,我想你需要sudo

扫描过程将花费很长时间(高枕无忧,2TB 很多!),但是如果您再次运行该工具,结果将保存到savefile.save。键入recoverable 以找出您需要恢复的分区的标识符。标识符由 RecuperaBit 给出,不反映分区表。

假设它是#2,保存内容的 CSV 转储:

csv 2 contents.csv

程序将打印保存文件的路径。使用 LibreOffice 打开它并找到您要恢复的文件夹的 ID。例如,根目录的 ID 为 5,但如果您只错过两个目录,您可能不想获取所有文件的副本。

假设损坏的目录具有 id 124。返回 RecuperaBit 并输入:

restore 2 124

其中#2 仍然是分区标识符。它将列出正在恢复的文件。您可以导航到输出目录并检查您想要的内容是否在那里。如果不是,请重试:您可能选择了错误的标识符。

【讨论】:

  • 您好,感谢您详细而彻底的回答。给我几天时间回复你结果,我住在一个偏僻的地区,需要按照你的建议获得另一个高清(无论如何我需要另一个很高兴这样做)。只是几个问题(当我运行脚本时可能会变得很清楚),命令recoverable 是否从脚本中运行,即在扫描发生后是否提供命令提示符? csv 2 contents.csvrestore 2 124 也是如此。这就是你的答案和 GitHub 页面上的详细信息向我传达的信息。
  • @StuartClarke,没错。 RecuperaBit 中有一个非常简单的提示(没有制表符补全、没有历史记录、没有双引号等)。 :)
  • 运行csv 2 contents.csv后我打开了contents.csv文件但找不到文件夹,事实上很多文件夹都丢失了,包括Dropbox文件夹,但它确实显示了一些文件夹Dropbox 文件夹。值得从根恢复吗??
  • @StuartClarke 如果您看到任何要恢复的文件,那么可以。或者查看 CSV 文件的最后一部分,在 Lost Files.
猜你喜欢
  • 1970-01-01
  • 2013-12-15
  • 2021-04-07
  • 2011-07-15
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
相关资源
最近更新 更多