extundelete在ext4上恢复成功率高,因其专为ext3/ext4设计,可直接解析未清零的journal和inode位图以重建原始元数据,不全盘扫描、速度快且误报少。

Linux 下删除文件后,只要数据块没被覆盖,就有可能恢复;但没有“回收站”机制,rm 是直接解除 inode 链接,恢复成功率高度依赖操作及时性与磁盘写入压力。
为什么 ext4 上用 extundelete 恢复成功率高?
extundelete 专为 ext3/ext4 设计,能直接读取未清零的 journal 和 inode 位图,找回已删文件的原始元数据。它不扫描整个磁盘,而是解析文件系统结构,因此速度快、误报少。
- 仅适用于未卸载且未执行过
e2fsck -f的 ext3/ext4 分区(journal 必须可用) - 恢复前必须立即卸载目标分区,或以只读方式挂载,否则新写入会覆盖数据
- 不支持从 LVM 逻辑卷或加密卷直接恢复,需先映射出裸设备
- 示例:恢复 /dev/sdb1 上最近删除的
report.pdf:sudo extundelete /dev/sdb1 --restore-file "report.pdf"
photorec 能绕过文件系统直接恢复吗?
能。photorec 是基于文件头签名的“盲恢复”工具,完全忽略目录结构和文件名,只按常见格式(如 JPEG、PNG、PDF、DOCX)扫描磁盘扇区。适合 ext4/xfs/btrfs 等所有文件系统,也适用于损坏或格式化后的分区。
- 恢复出的文件名全部丢失,统一用
f<em>xxxx</em>.ext命名,需人工甄别 - 不恢复小文件(默认最小 1KB),可通过
--min-size调整 - 对 SSD 效果差:TRIM 命令会主动清空已删块,
photorec扫不到有效数据 - 运行前建议用
dd先镜像分区:sudo dd if=/dev/sdb1 of=sdb1.img bs=4M
,避免原盘二次写入
误删 /home 下大量文件,该优先用哪个工具?
先看文件系统类型和是否还能挂载:如果仍是 ext4 且未重启/写入,extundelete 是首选;若已重启、改用 xfs 或不确定类型,直接上 photorec。
- 不要用
debugfs手动恢复——它需要精确知道 inode 号,而lsdel列出的“已删文件”在 ext4 上基本不可信(inode 重用太快) - 别在原分区创建恢复目录或保存结果,务必输出到另一块物理盘
-
testdisk不是文件恢复工具,它是分区表修复工具,和本场景无关 - SSD 用户请立刻停止所有写入,并确认 BIOS/UEFI 中 TRIM 是否启用(
sudo lsblk -D查看DISC-GRAN和DISC-MAX)
真正决定成败的不是工具选型,而是删除后是否第一时间停写、卸载、镜像——90% 的失败案例,都发生在用户试图“先查下日志再处理”的两分钟里。











