驱动器恢复 - `ddrescue` 挂起

mon*_*okh 5 hard-drive data-recovery ddrescue

我正在使用ddrescue从硬盘驱动器恢复文件。细节:

  • 500GB SATA 驱动器,
  • 2 个分区(例如sdb2sdb3)——每个分区有大约 200 GB 的数据,
  • 与 SATA 适配器连接到 USB,
  • 运行:sudo ddrescue -d /dev/sdb2 sdb2.img sdb2.logfile --force -R

磁盘因我的经历而严重损坏:

  • 安装和浏览需要很长时间。
  • 间歇性地变得无反应。
  • 一个接一个地跨文件复制没有多少运气。

我一直ddrescue在每个分区上运行,看到了一些奇怪的东西,但这给了我希望。

  • ddrescue似乎只是在各个时间点挂,即iposopos不动也不做run time。当前利率保持非常高并且不会改变。这里发生了什么?驱动器是否只是在一段时间内完全没有响应?
  • 很多时候,ddrescue拯救任何东西都没有取得任何进展,并last sucessful read开始计算很长一段时间——真的是无限期。发生这种情况时,我^C退出,对驱动器ddrescue重新通电并重新启动。令人惊讶的是,它立即开始以非常高的速度成功抢救文件。有时这会持续,有时几秒钟后它就会死在水中。

它看起来像这样:

rescued:    10970 MB,  errsize:    338 MB,  current rate:   15073 kB/s
   ipos:   191426 MB,   errors:    3806,    average rate:   15612 kB/s
   opos:   191426 MB, run time:    1.65 m,  successful read:       0 s ago
Run Code Online (Sandbox Code Playgroud)

过了一会儿:

rescued:    11402 MB,  errsize:    600 MB,  current rate:        0 B/s
   ipos:   144382 MB,   errors:    7149,    average rate:    4299 kB/s
   opos:   144382 MB, run time:    7.66 m,  successful read:    2.06 m ago
Run Code Online (Sandbox Code Playgroud)

驱动器在第一次插入后一段时间内读取绝对正常这一事实让我认为这里除了坏扇区之外还有其他东西在起作用。例如,我可以编写一个ddrescue经常重启和重启的 bash 脚本吗?这会杀死驱动器吗?有关信息,我从这篇关于ddrescue.

Del*_*tik 5

SATA 到 USB 适配器有所不同。其中一些在遇到 I/O 错误时忘记了磁盘,而另一些则返回 I/O 错误并继续。根据您使用的适配器,有多种行为。

我认为您的设备会阻塞所有 I/O,直到重新启动电源为止。

您可能无法从命令行物理断开并重新连接适配器以重置其电源状态,但您可以尝试重置 USB 设备或 USB 端口

如果这不起作用,我建议直接通过SATA插入硬盘,然后ddrescue在SATA插入硬盘的情况下运行。这样,您就可以绕过 USB 适配器,而 USB 适配器似乎会因每个错误而陷入困境。