因此,我ext4
安装了一个分区,/home
该分区开始出现故障。在确认这是 HDD 问题后,我停止使用它,购买了一个新的,然后从一个可用的 USB 记忆棒中格式化了新的 USB 记忆棒并使用 复制了分区ddrescue
。最后,fsck
修复任何剩余的 FS 问题:
$ sudo ddrescue -f -n /dev/sda1 /dev/sdb1 /root/ddrescue.log
# There were very few bad areas reported (my bad not saving the log file)...
$ sudo fsck -f /dev/sdb1
安装新驱动器后,一切恢复“正常”;大多数应用程序运行完美,但有些应用程序遇到了一些问题。跟踪这些问题到特定的配置文件,我可以看到这些文件已“损坏”,并找到了这种检查方法:
$ hexdump -C ok.conf
00000000 5b 63 65 72 74 5d 0a 63 61 5f 66 69 6c 65 3d 0a |[cert].ca_file=.|
00000010 74 72 75 73 74 65 64 5f 63 65 72 74 3d 65 38 63 |trusted_cert=e8c|
# Truncating output...
$ file ok.conf
ok.conf: ASCII text
$ hexdump -C corrupt.conf
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000231
# This output is not truncated.
$ file corrupt.conf
corrupt.conf: data
即使文件大小对于损坏的文件来说也没有意义:
$ ls -l *.conf
-rw-rw-r-- 1 user user 561 sep 30 08:36 corrupt.conf
-rw-rw-r-- 1 user user 561 oct 7 09:21 ok.conf
所以问题是:有没有办法在恢复后识别损坏的文件?有办法修复这些吗?
笔记:我仍然保留着包含所有数据的原始驱动器,我可以确认新驱动器没问题。进一步阅读后,有些人建议使用ddrescue
重试选项(-r3
)进行第二次运行,以便在出现读取错误时重试,我还没有尝试过,不知道它是否会有所作为。也许有人也可以阐明这一点。
答案1
有没有办法在恢复后识别损坏的文件?
有些应用程序和实用程序可以验证某些文件类型(例如图像、音频、视频、档案),但除此之外,许多文件格式是特定于应用程序的,无法可靠地检查。
有办法修复这些吗?
- 图片:没办法
- 视频:删除损坏的帧
- 音频:静音/删除损坏的部分
- 档案:大多数档案都是“固态”的,因此您可以尝试将文件恢复到档案损坏但所有后续文件都丢失的程度
- 其他格式:取决于应用程序