恢复硬盘数据

Eri*_*k W 13 hard-drive fdisk

我有一台最近“死机”的戴尔笔记本电脑(启动时会出现蓝屏死机)并且硬盘驱动器会发出奇怪的循环咔嗒声。

我想看看我是否可以在我的 linux 机器上使用一些工具来恢复数据,所以我把它插入那里。

如果我运行“fdisk”,我会得到:

Disk /dev/sdb: 20.0 GB, 20003880960 bytes
64 heads, 32 sectors/track, 19077 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Disk identifier: 0x64651a0a

Disk /dev/sdb doesn't contain a valid partition table
Run Code Online (Sandbox Code Playgroud)

好吧,分区表搞砸了。但是,如果我运行“testdisk”以尝试修复该表,它此时会冻结,并发出相同的循环点击噪音:

Disk /dev/sdb - 20 GB / 18 GiB - CHS 19078 64 32
Analyse cylinder   158/19077: 00%
Run Code Online (Sandbox Code Playgroud)

我真的不关心硬盘驱动器再次工作,只关心数据,所以我运行“gpart”来找出分区以前的位置。我懂了:

dev(/dev/sdb) mss(512) chs(19077/64/32)(LBA) #s(39069696) size(19077mb)

* Warning: strange partition table magic 0x2A55.
Primary partition(1)
   type: 222(0xDE)(UNKNOWN)
   size: 15mb #s(31429) s(63-31491)
   chs:  (0/1/1)-(3/126/63)d (0/1/32)-(15/24/4)r
   hex:  00 01 01 00 DE 7E 3F 03 3F 00 00 00 C5 7A 00 00

Primary partition(2)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX) (BOOT)
   size: 19021mb #s(38956987) s(31492-38988478)
   chs:  (4/0/1)-(895/126/63)d (15/24/5)-(19037/21/31)r
   hex:  80 00 01 04 07 7E FF 7F 04 7B 00 00 BB 6F 52 02
Run Code Online (Sandbox Code Playgroud)

所以我试图只挂载到旧的 NTFS 分区,但出现错误:

sudo mount -o loop,ro,offset=16123904 -t ntfs /dev/sdb /mnt/usb
NTFS signature is missing.
Run Code Online (Sandbox Code Playgroud)

啊。好的。但是后来我尝试通过运行来获取原始数据转储

dd if=/dev/sdb of=/home/erik/brokenhd skip=31492 count=38956987 
Run Code Online (Sandbox Code Playgroud)

但是该文件达到了 59885568 字节,并发出了相同的循环点击噪音。

显然有坏道,但我不知道该怎么办!

数据仍然存在......如果我在文本板中查看那个 57MB 的文件......我可以看到来自文件的原始数据。

我怎样才能取回我的数据?

感谢您的任何建议,

解决方案:

我能够恢复大约 90% 的数据:

  1. 在冰箱中冻结硬盘
  2. 使用Ddrescue制作驱动器的副本
  3. 由于Ddrescue无法获得足够的我的硬盘来使用testdisk 恢复我的分区/文件系统,我结束了使用photorec 恢复我的大部分文件

Jou*_*eek 13

DDrescue 旨在在这种情况下获取数据。然后尝试挂载图像,如果文件丢失,请给 testdisk 和 photorec 一个机会在图像上。


Goy*_*uix 5

由于您精通 Linux,请尝试在驱动器上同时运行TestdiskPhotoRec。或者更好的是,尝试获取驱动器的 dd 映像并让它们爬过它。发出噪音的硬盘驱动器往往会出现严重的问题,并且在噪音开始后不会持续很长时间。