我尝试使用以下方法恢复通过 USB 连接到 Linux 机器的磁盘:GNU 救援,但在运行了前 2 GB 后,它无法挽救任何东西,而只报告读取错误。为了避免进一步的磁盘损坏,我中断了该过程:
$ sudo ddrescue /dev/sdb hdimage mapfile
GNU ddrescue 1.25
Press Ctrl-C to interrupt
ipos: 2028 MB, non-trimmed: 2035 MB, current rate: 0 B/s
opos: 2028 MB, non-scraped: 0 B, average rate: 0 B/s
non-tried: 998169 MB, bad-sector: 0 B, error rate: 262 kB/s
rescued: 0 B, bad areas: 0, run time: 4m 24s
pct rescued: 0.00%, read errors: 31158, remaining time: n/a
time since last successful read: n/a
Copying non-tried blocks... Pass 5 (forwards)^C
Interrupted by user
该磁盘包含三个分区,其中第二个分区是仍可挂载的 HFS+ 分区,但访问它会导致 I/O 错误:
sd 2:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
sd 2:0:0:0: [sdb] tag#0 Sense Key : Medium Error [current]
sd 2:0:0:0: [sdb] tag#0 Add. Sense: Unrecovered read error
sd 2:0:0:0: [sdb] tag#0 CDB: Read(10) 28 00 00 1c f1 78 00 00 08 00
print_req_error: critical medium error, dev sdb, sector 1896824
Buffer I/O error on dev sdb2, logical block 185898, async page read
在对损坏的磁盘进行操作之前,我使用健康的磁盘测试了我的设置,并且我可以ext4
使用同一台机器和同一个 USB 端口上的相同命令挽救分区的所有 80 GB。
这是否意味着磁盘已经坏了,还是我做错了什么?也许我应该继续ddrescue
运行,看看后续阶段是否会有所改善?我还能尝试什么而不冒进一步数据丢失的风险?
答案1
是的,这(尤其是日志错误)表明磁盘已损坏。您没有做错任何事,而且这不是 ddrescue 错误。
我接下来可能会尝试重新插入磁盘(确保您识别新的 sdX 号码,因为这些号码可能会发生变化),然后尝试使用以下语法反向运行 ddrescue:
sudo ddrescue -R /dev/sdX hdimage mapfile
只要您有时间,您就可以尝试此操作(正向和反向) - ddrescue 将尽力而为。
答案2
但我最大的担心是每次读取都可能造成新的损害。真的是这样吗?
是的。
也许将磁盘交给一家做数据恢复的公司会是一个更安全的选择?他们能比有价值的 ddrescue 做得更好吗?
是的,因为他们可以检查硬件的状况,而不仅仅是尝试读取扇区。