我正在尝试使用 恢复损坏硬盘的数据testdisk
。我做了所有事情,进行了快速搜索、深入搜索,然后,在确认 已找到我的文件后testdisk
,我写入了分区表。然后重新启动了计算机。所以,现在我认为我遇到了一个更大的问题。硬盘现在testdisk
作为 2199GB 驱动器播种,如果我按照 testdisk FAQ 中的建议将其直接插入 SATA 端口,即使我的 BIOS 也无法正确识别它,我无法testdisk
再次运行,因为它无法识别具有正常大小(即 500GB)的驱动器。
尝试以只读方式安装驱动器以尝试恢复数据也不起作用,我收到消息"NTFS is inconsistent"
。
我尝试在 Windows 磁盘管理器中查看该驱动器,但它需要很长时间才能显示,并且仍然显示为原始状态,没有关于其大小的信息。
testdisk 的输出用于识别驱动器。您可以看到我的个人硬盘 (sda) 和我想要恢复的驱动器 (sdb) 都应列为 500GiB。
需要注意的是,列表中 sda(我的硬盘)占用的磁盘空间是我想要恢复的硬盘占用的磁盘空间。实际上,我的硬盘占用的磁盘空间量为 110GB。
我可以确认驱动器没有坏了,因为 LED 亮了,而且我能感觉到磁盘正在运行。
如果我使用 smartmontools 或 gsmartcontrol 查看硬盘状态,我会得到以下结果:
恢复这些数据对我来说非常重要,因为它包含了大学和硕士学位的材料,而我上次备份是在一个月前(由于我的备份外部 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
纠正打印,看起来像是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 ?
是不是應該這樣?
其次,命令输出可以在这里看到:
我不确定rescued
、、ipos
和中显示的值opos
是否错误,所以我请别人告诉我是否应该是这样的。该驱动器的实际容量为 500GB,并且显示的一些数字比这更大。
另外,文件大小copy.img
为 0 字节。这是否意味着没有复制数据或没有成功恢复的数据?
编辑5:
经过漫长的过程和等待,多次重新插入驱动器以保持进程继续,看起来ddrescue
已经完成了,但.img
文件有 0 字节。我做错了什么吗?我只是按照给出的说明操作。
编辑6
我将此问题标记为已解决,因为如果驱动器没有“死机”,解决错误的过程大部分都会起作用。感谢所有提出想法的人,尤其是安德烈亚·拉扎罗托。
答案1
驱动器看起来精神上损坏的。
幸运的是,硬盘没有感觉。;) 然而,我很遗憾地通知你您的驱动器看起来已受到物理损坏或者至少是走向失败:
如果我再次运行该命令而不拔下驱动器,会立即给出相同的输出
这基本上意味着“不好”。
在这种情况下你必须做的事情是:
- 停止对驱动器进行任何写入操作(您已经停止尝试使用 重写分区表
testdisk
,这很好) - 制作故障驱动器的比特流副本(又称图像文件)
克隆驱动器
首先,ddrescue
通过软件包安装该工具gddrescue
(g
不是一个拼写错误),用于复制故障驱动器的精确副本,克隆尽可能多的信息。我基本上引用我的这个答案关于相关问题:
sudo ddrescue /dev/sdb /media/user/External/copy.img /media/user/External/status.log
该
status.log
文件不是强制性的,但如果您想暂停该过程并稍后恢复,则需要它。
如您所见,您将需要另一个足够大的驱动器来容纳整个 500GB 驱动器的副本(基本上,至少 1TB 大小的硬盘)。在我的示例中,它安装在 上/media/user/External
。请根据您的情况调整示例。
该ddrescue
工具将其进度保存在/media/user/External/status.log
文件中。这非常有用因为驱动器可能会因 I/O 错误而“消失”(就像它在查找)。程序将停止。您将重新连接驱动器并再次运行相同的命令:它将从停止的地方继续。
此外,ddrescue
首先读取“好”和“大”块,然后再返回更多损坏的区域,尝试减少单次操作中读取的数据量,直到所有好位都被隔离。
尽管驱动器显示为 2TB,但实际上它是 500GB。因此,复制驱动器的过程将停止在 500GB。
在副本上运行 TestDisk
现在您可以像以前一样使用 TestDisk,但在副本上:
sudo testdisk /media/user/External/copy.img
当您看到分区内容(使用密钥P)时,不要继续写入分区表。而是使用密钥C开始提取所需的数据(希望它没有损坏)。
对于此操作,您将需要任何驱动器上的可用空间(用于存储比特流副本的驱动器,或者 USB 密钥或其他任何驱动器)以便提取文件。
如果 TestDisk 失败
如果 TestDisk 无法访问 NTFS 驱动器(因为它没有损坏),则可以使用 RecuperaBit 重建 NTFS 结构,如所述在上述答案中。
免责声明:我是 RecuperaBit 的开发者。