无法从 Windows、Mas OSX 或 Linux 访问损坏的 NTFS 文件夹
Corrupt NTFS folder not accessible from either Windows, Mas OSX or Linux
我有一个 2TB 外置硬盘,里面有大量来自 GoPro 和 Sony Handycam 的视频文件以及其他备份内容。最近,在尝试从我的 Mac 进行备份时(通过 OSXFUSE 使用一些 hack 来允许写入 NTFS 文件系统,直到现在它一直在为我工作)我发现我的一个文件夹丢失了一些文件夹。我删除了外部 HD 并尝试从 Ubuntu 中恢复它,但在 Ubuntu 中我对内容的可见性更低。请参阅下面的屏幕截图。紫色的 2 个文件夹不再作为文件夹,它们的名称已缩短,它们应显示为 'Navimag Ferry' 和 'Sony Hanicam'(Handycam 的错别字)。
当我 运行 ls -al
我得到以下内容
在我看来,信息是存在的,因为可用的 space 没有改变。
到目前为止,我已经尝试了以下方法:
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
功能,但找不到丢失的文件或文件夹。
在我看来,数据和目录结构之间的 link 丢失了,但我不确定如何找回这个 link。
有什么想法吗??
谢谢,
斯图
小免责声明/介绍
我是 a MSc thesis related to forensic NTFS reconstruction when metadata is partially damaged 的作者,也是 RecuperaBit 的作者,我将在本回答的后面提到开源软件。
(可能)发生了什么
The 2 folders coloured purple no longer act as folders and their names have been shortened
NTFS 文件记录(称为 MFT 条目)包含一些关键元素:
- 标志 → 一些描述文件的位。特别是,一位对应 "Is this a folder?" 问题,另一位对应 "Is this deleted or still allocated?".
$FILE_NAME
attribute(s) → 每个文件都有一个或多个文件名,因为NTFS兼容DOS 8.3名称。
$STANDARD_INFORMATION
属性 → 这包含 MAC(修改、访问、创建)次和更多。
此外,每个目录包含一个 $INDEX_ROOT
和可能的几个 $INDEX_ALLOCATION
列出子名称的属性(但不是 MAC 次)。
从你的输出来看,在我看来,这两个目录的 MFT 条目已经丢失。您仍然将它们视为 camera uploads
中的元素,因为它们位于其中一个索引属性中,但是当系统尝试读取记录以向您显示日期时,它会失败。
NTFS 驱动程序与任何其他 "normal" OS 实用程序一样访问文件系统:它是自上而下的。破坏一个节点,您将丢失任何子树(基本上是那些目录的内容)。
这就是高级数据恢复软件可以提供帮助的地方。
正在恢复文件
由于这是一个编程相关网站,我将简要说明您将如何编写一个能够读取缺少某些 MFT 条目的 NTFS 分区的软件:
- 扫描整个驱动器,尝试将任何以
FILE
开头的扇区对解析为有效的 MFT 条目(我在这里进行了一些简化)
- 通过对任何节点执行此操作来构建自下而上的树:
- 读取父节点的id
- 如果您有一个具有上述 ID 的节点,link 子节点到父节点
- 否则,在
Lost Files
下创建一个 Folder_<id>
目录,并将 link 子目录
- 读取要恢复的每个文件的
$DATA
属性并将它们复制到其他地方
有关文件系统重建算法技术的更多详细信息,请查看我在上面 link 编辑的论文。
您可以尝试的工具
我在软件推荐网站上提到了一些程序 in this answer。这些专门针对严重损坏的驱动器,它们包括:
- DMDE(商业版,Windows,但有 Linux 的控制台版本)
- Restorer Ultimate(商业,对于 Windows 和 OS X)
- RecuperaBit(开源,基于 Python):它 运行 在 Linux 上是肯定的,但它已经在 Windows 上进行了简单的测试... 就像 一次 。它也应该 运行 在 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 提供,不反映分区 table.
假设它是 #2
,保存内容的 CSV 转储:
csv 2 contents.csv
程序将打印保存文件的路径。使用 LibreOffice 打开它并找到您要恢复的文件夹的 ID。例如,根目录的 ID 为 5
,但如果您只遗漏两个目录,您可能不想获取所有文件的副本。
假设损坏的目录有 id 124
。返回 RecuperaBit 并输入:
restore 2 124
其中#2
仍然是分区标识符。它将列出正在恢复的文件。您可以导航到输出目录并检查是否有您想要的内容。如果不是,请重试:您可能选择了错误的标识符。
我有一个 2TB 外置硬盘,里面有大量来自 GoPro 和 Sony Handycam 的视频文件以及其他备份内容。最近,在尝试从我的 Mac 进行备份时(通过 OSXFUSE 使用一些 hack 来允许写入 NTFS 文件系统,直到现在它一直在为我工作)我发现我的一个文件夹丢失了一些文件夹。我删除了外部 HD 并尝试从 Ubuntu 中恢复它,但在 Ubuntu 中我对内容的可见性更低。请参阅下面的屏幕截图。紫色的 2 个文件夹不再作为文件夹,它们的名称已缩短,它们应显示为 'Navimag Ferry' 和 'Sony Hanicam'(Handycam 的错别字)。
当我 运行 ls -al
我得到以下内容
在我看来,信息是存在的,因为可用的 space 没有改变。
到目前为止,我已经尝试了以下方法:
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
功能,但找不到丢失的文件或文件夹。
在我看来,数据和目录结构之间的 link 丢失了,但我不确定如何找回这个 link。
有什么想法吗??
谢谢,
斯图
小免责声明/介绍
我是 a MSc thesis related to forensic NTFS reconstruction when metadata is partially damaged 的作者,也是 RecuperaBit 的作者,我将在本回答的后面提到开源软件。
(可能)发生了什么
The 2 folders coloured purple no longer act as folders and their names have been shortened
NTFS 文件记录(称为 MFT 条目)包含一些关键元素:
- 标志 → 一些描述文件的位。特别是,一位对应 "Is this a folder?" 问题,另一位对应 "Is this deleted or still allocated?".
$FILE_NAME
attribute(s) → 每个文件都有一个或多个文件名,因为NTFS兼容DOS 8.3名称。$STANDARD_INFORMATION
属性 → 这包含 MAC(修改、访问、创建)次和更多。
此外,每个目录包含一个 $INDEX_ROOT
和可能的几个 $INDEX_ALLOCATION
列出子名称的属性(但不是 MAC 次)。
从你的输出来看,在我看来,这两个目录的 MFT 条目已经丢失。您仍然将它们视为 camera uploads
中的元素,因为它们位于其中一个索引属性中,但是当系统尝试读取记录以向您显示日期时,它会失败。
NTFS 驱动程序与任何其他 "normal" OS 实用程序一样访问文件系统:它是自上而下的。破坏一个节点,您将丢失任何子树(基本上是那些目录的内容)。
这就是高级数据恢复软件可以提供帮助的地方。
正在恢复文件
由于这是一个编程相关网站,我将简要说明您将如何编写一个能够读取缺少某些 MFT 条目的 NTFS 分区的软件:
- 扫描整个驱动器,尝试将任何以
FILE
开头的扇区对解析为有效的 MFT 条目(我在这里进行了一些简化) - 通过对任何节点执行此操作来构建自下而上的树:
- 读取父节点的id
- 如果您有一个具有上述 ID 的节点,link 子节点到父节点
- 否则,在
Lost Files
下创建一个Folder_<id>
目录,并将 link 子目录
- 读取要恢复的每个文件的
$DATA
属性并将它们复制到其他地方
有关文件系统重建算法技术的更多详细信息,请查看我在上面 link 编辑的论文。
您可以尝试的工具
我在软件推荐网站上提到了一些程序 in this answer。这些专门针对严重损坏的驱动器,它们包括:
- DMDE(商业版,Windows,但有 Linux 的控制台版本)
- Restorer Ultimate(商业,对于 Windows 和 OS X)
- RecuperaBit(开源,基于 Python):它 运行 在 Linux 上是肯定的,但它已经在 Windows 上进行了简单的测试... 就像 一次 。它也应该 运行 在 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 提供,不反映分区 table.
假设它是 #2
,保存内容的 CSV 转储:
csv 2 contents.csv
程序将打印保存文件的路径。使用 LibreOffice 打开它并找到您要恢复的文件夹的 ID。例如,根目录的 ID 为 5
,但如果您只遗漏两个目录,您可能不想获取所有文件的副本。
假设损坏的目录有 id 124
。返回 RecuperaBit 并输入:
restore 2 124
其中#2
仍然是分区标识符。它将列出正在恢复的文件。您可以导航到输出目录并检查是否有您想要的内容。如果不是,请重试:您可能选择了错误的标识符。