使用 ddrescue 从出现故障的 ntfs 磁盘中检索数据

ugl*_*cat 4 linux data-recovery ntfs ddrescue

我正在尝试保存在 Window 8 计算机中出现故障的磁盘的一些用户数据。我已经移除了 Windows 8 笔记本电脑无法读取的硬盘驱动器,插入到我的 OS X 机器上,它可以看到分区但无法安装它们。(ntfs-3g 也不能)。

diskutil list 显示:

/dev/disk8 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk8
   1:                        EFI ESP                     524.3 MB   disk8s1
   2: 786BA1D3-6BAF-4D9G-B621-461EB71A4965               41.9 MB    disk8s2
   3:         Microsoft Reserved                         134.2 MB   disk8s3
   4:           Windows Recovery                         513.8 MB   disk8s4
   5:       Microsoft Basic Data                         985.0 GB   disk8s5
   6:           Windows Recovery                         471.9 MB   disk8s6
   7:           Windows Recovery                         367.0 MB   disk8s7
   8:           Windows Recovery                         13.2 GB    disk8s8
Run Code Online (Sandbox Code Playgroud)

我正在ddrescue尝试恢复硬盘的内容......所以我目前正在使用以下命令:

sudo ddrescue -n /dev/rdisk8s5 ./backup.dmg mapfile

基于实际用户数据在分区 #5 中的假设......

到目前为止,几天后,当前的输出ddrescue看起来像:

GNU ddrescue 1.20
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued:   126523 MB,  errsize:       0 B,  errors:       0

Current status
rescued:   261066 MB,   errsize:         0 B,    current rate:  19202 kB/s
   ipos:   456274 MB,    errors:         0,      average rate:   1568 kB/s
   opos:   456274 MB,  run time: 23h 49m 38s,  remaining time:         n/a
time since last successful read:          0s
Run Code Online (Sandbox Code Playgroud)

运行时将关闭,因为我有ctrl-c几次,一次尝试file.dmg 以查看它是否可以确定任何内容(不)。

从我所知道的,它的膨胀的伤害到的相对大小ipos以及opos但是从我个人理解,数据的真实大小恢复是rescued量。

我注意到的一件事是,虽然平均速率是1568kB/s,但它似乎每 1 分钟到 2 分钟读取一次大约 5 到 10 秒。


根据上述信息,我目前正在等待它完成此传递(估计,根据 dmg 的大小(ipos/opos 大小),总共应为约 100 小时,但不确定我是否应该将其加倍到rescued一半的大小(我需要两倍的磁盘空间来保存吗?)

任何有磁盘恢复经验的人,我有以下问题-

  1. 这看起来怎么样?我没有看到任何错误,但它自己的PC无法读取磁盘,Mac也无法安装它,因此我对恢复数据感到悲观。

  2. 一旦我“完成”...需要做什么才能访问保存在 .dmg 中的数据——Windows 8 加密会不会是我遇到的问题?

  3. 我需要为正在保存的 DMG 提供 2 倍的磁盘空间吗?由于获救的大小是 dmg 和 ipos/opos 的一半。或者是驱动器处于如此可怕的状态,以至于它只能恢复一半的东西。

我不认为已用驱动器空间接近 1 TB 的用户数据...

任何其他建议将不胜感激。

And*_*tto 5

免责声明:我是 RecuperaBit 的开发者。这个答案是我的这个答案的总结,混合了 OP 的反馈。

您的ddrescue命令仅克隆第五个分区 ( /dev/rdisk8s5),如果您确定分区表正确,这很好。但是,如果您有足够的空间,我强烈建议您克隆整个驱动器。

曾经尝试file.dmg

请记住,这是ddrescue制作驱动器的原始比特流副本。无论您如何称呼它,该文件都不是 DMG 文件。通常,您会使用.img扩展名或有时使用.dd.

自己的电脑无法读取磁盘,mac也无法挂载,所以我对恢复数据持悲观态度

你肯定不会得到一个工作分区。但是,即使 NTFS 结构部分损坏,也可以恢复未损坏的部分数据。

如果驱动器只是轻微损坏,您可以尝试testdisk,但是file未检测到 NTFS 签名的事实表明情况更糟。

需要做什么来访问正在保存的数据

您可以使用RecuperaBit,这是一个用于取证 NTFS 重建的开源软件。它使用的算法执行自下而上的重建,这在我的硕士论文中有所描述。要点是:

  • 它会扫描整个驱动器以查找文件痕迹
  • 它重建目录树或可以恢复的任何部分
  • 它允许您使用正确的名称导出文件的内容

要在您制作的图像文件上运行该工具,请创建一个输出目录并使用以下命令启动 RecuperaBit:

mkdir /path/to/another/drive/recovered_files
cd [full path of recuperabit]
pypy main.py /path/to/backup.dmg -o /path/to/another/drive/recovered_files -s /path/to/another/drive/recovered_files/savefile.save
Run Code Online (Sandbox Code Playgroud)

-s选项存储有用的有趣扇区日志,您可以在同一磁盘映像上的后续运行中再次加载这些日志。

扫描过程结束后,它将开始确定任何 NTFS 分区的几何形状。运行recoverable命令查看分区,然后恢复例如分区#2

restore 2 5
restore 2 -1
Run Code Online (Sandbox Code Playgroud)

其中5表示目录,-1表示丢失的文件目录。您可能会在Lost Files目录中发现很多有趣的东西,因为您的驱动器已损坏。

检查其他答案以了解一些注意事项和限制。

顺便说一下,由于针对您的特定情况稍微修补了程序,如果您可以将您的补丁作为拉取请求提交,那就太好了。