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)
应该是这样吗?
其次,可以在这里看到命令输出:
我不知道,如果数值所呈现的rescued
,ipos
和opos
是错误的或没有,所以我问别人告诉我,如果应该是这样的。该驱动器的实际容量为 500GB,并且显示的一些数字大于该数字。
此外,copy.img
文件的大小为 0 字节。这是否意味着没有数据被复制或没有成功的数据可以恢复?
编辑 5:
经过漫长的过程和等待,大量重新插入驱动器以保持过程继续进行,看起来ddrescue
已经完成,但.img
文件有 0 字节。我做错了什么吗?我只是按照给出的说明进行操作。
编辑 6
我将这个问题标记为已解决,因为如果驱动器没有“死机”,则用于解决错误的过程通常会起作用。感谢所有提出想法的人,尤其是Andrea Lazzarotto。
驱动器看起来没有精神上的损坏。
好在硬盘没有感情。;) 但是,我很遗憾地通知您,您的驱动器看起来已物理损坏或至少正在发生故障:
如果我在不拔下驱动器的情况下再次运行命令,会立即给出相同的输出
这基本上意味着“不好”。
在这种情况下,您绝对必须做的事情是:
testdisk
,这很好)首先,安装ddrescue
通过工具gddrescue
包(g
是不是一个错字),它是用来做故障驱动器的精确拷贝,克隆尽可能多的信息成为可能。我基本上会在一个相关问题上引用我的这个答案:
Run Code Online (Sandbox Code Playgroud)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 错误而“消失”(就像grepping 时那样)。程序将停止。您将重新连接驱动器并再次运行相同的命令:它将从停止的地方继续。
此外,首先ddrescue
读取“好”和“大”块,然后返回到更多损坏的区域,稍后尝试减少单个操作中读取的数据量,直到所有好的位都被隔离。
尽管该驱动器显示为 2TB 驱动器,但它实际上是一个 500GB 驱动器。因此,复制驱动器的过程将在 500GB 处停止。
现在您可以像以前一样使用 TestDisk,但在副本上:
sudo testdisk /media/user/External/copy.img
Run Code Online (Sandbox Code Playgroud)
当您到达查看分区内容(带有P密钥)的点时,不要继续写入分区表。相反,使用C密钥开始提取您需要的数据(希望它不会被损坏)。
对于此操作,您将需要任何驱动器上的可用空间(用于存储比特流副本的驱动器或 USB 密钥或其他任何驱动器)以提取文件。
如果 TestDisk 无法访问 NTFS 驱动器,因为它没有损坏,您可以使用 RecuperaBit 重建 NTFS 结构,如上述答案中所述。
免责声明:我是 RecuperaBit 的开发者。