我怎样才能自动从故障的 USB 硬盘驱动器中执行 ddrescue?

我怎样才能自动从故障的 USB 硬盘驱动器中执行 ddrescue?

我遇到了一个有趣的问题...

一位朋友让我从出现故障的外部 (USB) 硬盘驱动器中恢复数据,我一直使用 ddrescue 实用程序进行恢复。但是,每隔几个小时驱动器就会停止响应(这就是我恢复数据的原因),读取速度降至 0。此时,如果我将其拔下 5 分钟后再重新插入,我可以重新运行 ddrescue 并继续恢复。我想知道是否有某种方法可以自动执行此操作,因为读取速度非常慢,而且有很多数据需要恢复。

我可以使用以下方法关闭驱动器:

udisks --unmount /dev/sdd1
udisks --detach /dev/sdd

但我还没有找到在驱动器“分离”后再次启动它的方法

我还没有弄清楚的另一个问题是如何找出读取速度何时降至 0 以及何时进行此电源循环。

有人有主意吗?

答案1

你可以尝试usbctl或者uhubctl. 如果您的 USB 芯片组支持此功能,这两种工具都可以关闭/打开 USB 端口。

关闭并打开外部磁盘的端口后,它应该可以再次被识别。

为了实现此自动化,可以使用lsof或类似方法监视进程活动,或者只是简单地观察输出图像文件的增长大小,如果大小在一段时间后没有改变,则pkill ddrescue等到它自行终止,然后关闭/打开磁盘并重新启动 ddrescue 进程。

相关内容