在创建安装 USB 磁盘时,我犯了一个小错误,指示了错误的设备,最终覆盖了 230 GB 磁盘的初始几百兆字节。
数据不是特别重要,但我仍然想恢复我能恢复的数据。第一个明显的尝试是,photorec
它确实找到了一些东西。但后来,我希望我可以“修复”文件系统的剩余部分(毕竟,我覆盖了不到 0.5%)。
因此,我尝试使用多种参数组合运行e2fsck
,包括使用备份超级块(类似于相关问题的答案中所建议的方式),最终在“lost+found”中出现了一堆文件夹 - 还算公平。问题是其中一些文件夹仍然会出现错误,例如
ls: cannot access 'lost+found/#26128': Structure needs cleaning
...但如果我现在再次运行e2fsck -f
(如其他答案所建议的那样),我不会发现任何奇怪的事情
e2fsck 1.47.0 (5-Feb-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
EData: 191504/15269888 files (0.1% non-contiguous), 48227460/61049344 blocks
... 顺便说一句,这只需要几秒钟,所以很明显它实际上并没有检查磁盘的所有内容。我尝试检查其他选项,例如尝试-E discard
,但没有任何变化:检查仍然非常快,但里面的一些文件夹lost+found
仍然出现相同的错误。
我该如何修复那些显示“结构需要清理”的文件夹错误?
请注意,从硬件角度来看,该设备运行完美。
可以修复所有问题的超级硬核 e2fsck 参数化是:
e2fsck -f -y -C0
。在过去的 30 年里我从未见过这种情况。如果文件 #26128 中没有真正重要的内容,那么我会使用命令将其删除
debugfs
,然后再次运行e2fsck -f -y -C0
。你确实处于一种特殊的情况。
您的错误看起来不像是这样,但这可能是超级块被覆盖或损坏的副作用。尝试使用备份或辅助超级块。超级块是主要的文件系统描述符数据结构。
您可以使用debugfs命令删除该文件。这是一个通用的 fs 恢复工具。这是一个非常小的命令行工具,可以对此类损坏的文件系统执行完全相同的“硬”更改。
此后,
e2fsck -f -y -C0 /dev/partition
将修复文件系统。