如何知道 NTFS 驱动器恢复中 MFT 是否完整?

如何知道 NTFS 驱动器恢复中 MFT 是否完整?

我一直在故障的 NTFS 驱动器上运行 ddrescue。我不记得驱动器上有什么,但我怀疑这不重要。

GNUddrescue能够轻松恢复驱动器的大约 80%,但恢复其余部分的速度非常慢。整个驱动器中都有重复出现的坏扇区,因此需要很长时间才能从驱动器中恢复所有数据:

ddrescueview 显示重复模式中存在许多错误

每个坏块的中间都有一些好数据(也呈现重复模式):

一个坏块,中间有小块好部分

但即使是第一个坏块也要花几天的时间才能解决,而且有数千个这样的坏块。

所以我只想确认驱动器上的文件不重要然后放弃。

我无法按原样安装驱动器映像。它说

$MFTMirr does not match $MFT (record 0).
Failed to mount '/dev/loop42': Input/output error
NTFS is either inconsistent, or there is a hardware fault, or it's a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the 'dmraid' documentation
for more details.

如果我运行,ntfsfix我就能挂载驱动器并查看文件夹和文件:

$MFTMirr does not match $MFT (record 0).
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... 
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
ntfs_mst_post_read_fixup_warn: magic: 0x00000000  size: 1024   usa_ofs: 0  usa_count: 0: Invalid argument
OK
Comparing $MFTMirr to $MFT... FAILED
Correcting differences in $MFTMirr record 0...OK
Correcting differences in $MFTMirr record 1...OK
Correcting differences in $MFTMirr record 2...OK
Correcting differences in $MFTMirr record 3...OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... FIXED
NTFS volume version is 3.1.
NTFS partition /dev/loop43 was processed successfully.

然后我可以安装它,并且我所能看到的一切都是我有重复副本的不重要的东西。

但我怎么知道它是否在列表全部驱动器上的文件和文件夹?

有没有办法查看 $MFT 和 $MFTMirr,vbindiff然后使用另一个中的副本手动更正其中一个中丢失的位?我读到 MFT 分散在整个驱动器中。我如何知道它是否恢复了所有 MFT?

相关内容