答案1
显然付费恢复服务是最好的选择,他们可以更换发动机和任何其他故障部件。
因此,这需要一些实验,但由于付费恢复听起来不是一个选择,所以尝试一下。
听起来硬件出现故障,你无法修复,你必须接受这个过程的一些繁琐。可能是硬盘电机出现故障,在这种情况下,更换它超出了 90% 的人的技能范围。
您将需要一个比源更大的输出设备。
实现自动化的唯一方法是,如果您有一个受控插座板,您可以定期让脚本关闭和打开,并将单独的电源上的硬盘插入到所述插座板上。
我相信其他品牌的插座板也许能够做到这一点,但我确信 kasa hs300(69.99 美元 - 89.99 美元,具体取决于商店和销售价格)在 github 上有一个 python API(https://github.com/p-doyle/Python-KasaSmartPowerStrip) 可以从 Linux 内部控制插座板。我做过,但不是为了这个目的。
因此,基本上,如果您将硬盘放在外部 USB 机箱中,则可以使用插座板自动将其关闭并打开,以将其唤醒 30 秒。但是,我不知道您是否准备好应对这种复杂性。
你可以尝试 ddrescue
ddrescue -d -r3 /dev/sda test.img test.logfile
然而,硬盘每30秒就会停止工作一次,因此仍然需要每30秒拔下并重新插入一次。
或者
dd bs=512 if=/dev/sda of=/location/of/output/drv.img count=1000
好的,现在您有了前 1000 个扇区。
dd bs=512 if=/dev/sda of=/location/of/output/drv.img count=1000 -skip=1000 seek=1000
因此“skip”应该跳过您已有的前 1000 个扇区。“seek”会推进输出文件中的起始位置。
因此现在您只需按照与计数值相同的倍数继续推进跳过和寻找值即可。
dd bs=512 if=/dev/sda of=/location/of/output/drv.img count=1000 -skip=2000 seek=2000
dd bs=512 if=/dev/sda of=/location/of/output/drv.img count=1000 -skip=3000 seek=3000
dd bs=512 if=/dev/sda of=/location/of/output/drv.img count=10000 -skip=4000 seek=4000
dd bs=512 if=/dev/sda of=/location/of/output/drv.img count=10000 -skip=14000 seek=14000
您可以尝试越来越大的计数、跳过、查找值来减少所需的时间。
基本上,您需要达到 30 秒内(失败时间)可以读取的最大扇区数。然后继续以该大小的块为单位进行读取。
最终您将获得整个驱动器的映像。
然后你就可以挂载图像
mkdir /mnt/whatever
mount -o loop /blah.img /mnt/whatever
然后复制文件就很容易了。