我有已损坏的硬盘运行时受到的影响。磁盘有 6 个分区,还有一些未分配的空间。影响之后,3 个分区似乎没问题,我能够以不错的速度正常读取/写入它们,文件系统检查也没有失败。但有一个40 GiB ext4 分区此次事件发生后,磁盘上的内容已部分无法读取。
这个分区大约有8GB 可用空间。此分区上安装了一个 Linux 发行版,并且它/home
不在单独的分区上。因此,所有用户、操作系统和应用程序数据都位于这个单个分区中。
我尝试过什么
最初我尝试使用dd
Linux 中的命令将数据从损坏的分区复制到另一个磁盘上的另一个分区。但它多次失败并出现读取错误,我不得不在调整skip
和seek
选项后手动恢复它。
dd if=/dev/sdc4 of=/dev/sda2 bs=2M conv=notrunc status=progress iflag=noatime oflag=noatime seek=X skip=X
尽管这很有效(很慢),但这是一个痛苦的过程,所以我放弃了。
进一步阅读后,我发现GNU 救援工具和DDRescue-GUI在此基础上进行构建,并决定尝试一下。
第一天,大约 6-8 个小时后,我能够从该分区恢复 37+ GiB 的数据,多次运行 DDRescue-GUI(只要我有空闲时间),交替使用同一个日志文件从头和尾启动恢复过程。(我没有足够的时间让它一口气运行到完成)
第二天,恢复过程进行得相当缓慢,一天结束时,我留下了一个待处理的区块大小约为 400 MB在该分区的 2 GiB 和 3 GiB 标记之间。DDRescue 输出中的坏扇区数仍然为 0,但读取此区域的数据需要大量时间,等待 6 个多小时后进度不到 30MB。我尝试向前和向后运行,恢复速度相同。此外,DDRescue 输出中的未修剪计数器已达到约 27MiB。
我了解到磁盘的这个特定待处理部分已严重损坏,因此恢复需要很长时间。
问题
不想再等了,我想知道有什么办法可以不完整、缺失或无法修复的文件列表在当前部分恢复的 ext4 分区中?
例如,可以fsck.ext4
使用某些选项生成此列表以及完整路径到文件?
因此,如果我发现损坏的文件对我没有用,我可以重新安装操作系统和软件并开始正常使用恢复的分区。
附加问题
我可以调整 DDRescue 的读取间隔,以便它快速跳过难以读取的扇区,并且我能够进一步最小化 400 MB 的待处理块而无需等待几天吗?