testdisk 显示错误的驱动器大小

inb*_*ank 5 hard-drive testdisk data-recovery

我正在尝试使用testdisk. 我做的一切都很好,快速搜索,深入搜索,然后,在确认我的文件已被找到后testdisk,我写了分区表。并重新启动了计算机。所以,现在我想我遇到了更大的问题。硬盘现在testdisk是2199GB的硬盘,如果我按照testdisk FAQ中的建议直接插到SATA口,连我的BIOS都无法正确识别,我也无法testdisk再次运行,因为它没有无法识别具有正常大小(即 500GB)的驱动器。

尝试将驱动器安装为只读以尝试恢复数据也不起作用,我收到消息说"NTFS is inconsistent".

我试图在 Windows 磁盘管理器中查看驱动器,但显示需要很长时间,并且仍然显示为原始状态,没有关于其大小的信息。

在此处输入图片说明 testdisk 在识别驱动器时的输出。您可以看到我的个人硬盘驱动器 (sda) 和我要恢复的驱动器 (sdb) 都应列为 500GiB。

需要注意的一点是,列表中sda(我的硬盘)占用的磁盘空间是我要恢复的硬盘占用的磁盘空间。实际上,我的硬盘占用的磁盘空间为 110GB。

我可以确认驱动器没有死,因为 LED 亮起并且我可以感觉到磁盘正在运行。

如果我使用 smartmontools 或 gsmartcontrol 查看硬盘状态,我会得到以下结果:

在此处输入图片说明 驱动器的详细信息屏幕

恢复这些数据对我来说非常重要,因为它会演变为大学和硕士学位的材料,而我的上次备份是 1 个月前的(由于备份外部 USB 驱动器中的可用空间,我无法每天都这样做)。

我希望有人可以提供帮助,我知道很多人也有这个问题。

可以成为有用知识的事实:

  • R-Studio 演示在我的测试中毫无用处,如果我尝试在插入驱动器的情况下打开它,该程序将无法运行/不响应。

  • WD Lifeguard Diagnostic 也没有证明有用,因为它没有在它的桌子上显示驱动器。

  • 驱动器看起来没有精神上的损坏。

编辑 1:

根据要求,[ Geometry ]屏幕: 在此处输入图片说明

我应该尝试调整数字以显示真实的磁盘容量还是有恢复选项?

编辑 2: 驱动器是 WD Blue,型号 WD500LPVX

编辑 3: 命令parted -l /dev/sdb输出如下: 在此处输入图片说明

sudo grep -abiro "NTFS " /dev/sdb运行一段时间后,命令输出给了我:

grep: /dev/sdb: Input/output error
Run Code Online (Sandbox Code Playgroud)

更正打印,看起来像sdb在我执行 parted 命令之前卸载的,上图是真正的输出。

需要注意的一件事是,grep第一次输出后的命令大约需要 20 秒,如果我在不拔下驱动器的情况下再次运行命令,它会立即给出相同的输出。

编辑 4:

ddrescue 到现在已经运行了几个小时,但我发现输出的行为有些奇怪,如下所示:

首先,status.log文件的一些行的示例:

# Rescue Logfile. Created by GNU ddrescue version 1.19
# Command line: ddrescue /dev/sdc /media/sidious/Supply/dotk/bkpHD/copy.img /media/sidious/Supply/dotk/bkpHD/status.log
# Start time:   2016-07-29 01:05:36
# Current time: 2016-07-29 01:30:51
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status
0x8482360000     ?
#      pos        size  status
0x00000000  0x00010000  *
0x00010000  0x00010000  ?
0x00020000  0x00010000  *
0x00030000  0x00020000  ?
0x00050000  0x00010000  *
0x00060000  0x00040000  ?
Run Code Online (Sandbox Code Playgroud)

应该是这样吗?

其次,可以在这里看到命令输出: 在此处输入图片说明

我不知道,如果数值所呈现的rescuediposopos是错误的或没有,所以我问别人告诉我,如果应该是这样的。该驱动器的实际容量为 500GB,并且显示的一些数字大于该数字。

此外,copy.img文件的大小为 0 字节。这是否意味着没有数据被复制或没有成功的数据可以恢复?

编辑 5:

经过漫长的过程和等待,大量重新插入驱动器以保持过程继续进行,看起来ddrescue已经完成,但.img文件有 0 字节。我做错了什么吗?我只是按照给出的说明进行操作。

编辑 6

我将这个问题标记为已解决,因为如果驱动器没有“死机”,则用于解决错误的过程通常会起作用。感谢所有提出想法的人,尤其是Andrea Lazzarotto

And*_*tto 5

驱动器看起来没有精神上的损坏。

好在硬盘没有感情。;) 但是,我很遗憾地通知您,您的驱动器看起来已物理损坏或至少正在发生故障:

如果我在不拔下驱动器的情况下再次运行命令,会立即给出相同的输出

这基本上意味着“不好”。

在这种情况下,您绝对必须做的事情是:

  • 停止对驱动器的任何写入(您已经停止尝试使用 重新写入分区表testdisk,这很好)
  • 制作故障驱动器的比特流副本(又名图像文件)

克隆驱动器

首先,安装ddrescue通过工具gddrescue包(g不是一个错字),它是用来做故障驱动器的精确拷贝,克隆尽可能多的信息成为可能。我基本上会在一个相关问题上引用我的这个答案

sudo ddrescue /dev/sdb /media/user/External/copy.img /media/user/External/status.log
Run Code Online (Sandbox Code Playgroud)

status.log文件不是强制性的,但如果您想暂停该过程并稍后继续,则需要该文件。

如您所见,您将需要另一个足够大的驱动器来保存整个 500GB 驱动器的副本(基本上,一个至少 1TB 的硬盘)。在我的示例中,它安装在/media/user/External. 根据您的情况调整示例。

ddrescue工具将其进度保存在/media/user/External/status.log文件中。这非常有用,因为驱动器可能会因 I/O 错误而“消失”(就像grepping 时那样)。程序将停止。您将重新连接驱动器并再次运行相同的命令:它将从停止的地方继续。

此外,首先ddrescue读取“好”和“大”块,然后返回到更多损坏的区域,稍后尝试减少单个操作中读取的数据量,直到所有好的位都被隔离。

尽管该驱动器显示为 2TB 驱动器,但它实际上是一个 500GB 驱动器。因此,复制驱动器的过程将在 500GB 处停止。

在副本上运行 TestDisk

现在您可以像以前一样使用 TestDisk,但在副本上:

sudo testdisk /media/user/External/copy.img
Run Code Online (Sandbox Code Playgroud)

当您到达查看分区内容(带有P密钥)的点时,不要继续写入分区表。相反,使用C密钥开始提取您需要的数据(希望它不会被损坏)。

对于此操作,您将需要任何驱动器上的可用空间(用于存储比特流副本的驱动器或 USB 密钥或其他任何驱动器)以提取文件。

如果 TestDisk 失败

如果 TestDisk 无法访问 NTFS 驱动器,因为它没有损坏,您可以使用 RecuperaBit 重建 NTFS 结构,如上述答案中所述

免责声明:我是 RecuperaBit 的开发者。