
— 特色专栏 —
大家好,我是民工哥!
身为程序员的我们,谁还没有个手一抖误删文件的时候呢!
删库跑路这事可不太好搞哦,再说了,跑能跑掉的嘛,是吧。

不过,有了今天说的这款神器后,再也不必删库跑路了。
这款神兵利器就是:extundelete!
这款神器绝对是运维工程师们的最后一颗救命稻草。
extundelete 它是一款开源的 Linux 系统数据恢复工具,专为 Ext3 和 Ext4 文件系统设计。它通过分析文件系统的 inode(索引节点)和日志信息,恢复被意外删除(如使用 rm 命令)但尚未被新数据覆盖的文件或目录。该工具基于文件系统底层机制工作,避免了对磁盘的破坏性扫描,是 Linux 环境下数据恢复的重要工具之一。

官方网站:https://extundelete.sourceforge.net/
不过,切记一定是没有被新数据覆盖,没有被新数据覆盖,没有被新数据覆盖,重要的事情重复三遍。
否则,就算是大罗神仙来了,也救不了你哦。
首先,我们还是来了解一下关于文件系统数据删除的原理。
当你删除某个文件时,其实,这时系统并不是立马将文件从磁盘上擦除,而是执行了一个操作,这个操作就是将你所删除的文件对应的inode节点中的链接数标记为0,也就是说此文件不可被引用了。
然后,将此文件占用的数据块空间标记成空闲状态,这样可以允许后面的新数据写入(覆盖),此时,文件的实际数据其实还是被保留在磁盘上的,直到有新数据写入后将其覆盖,那么,这时这个文件才是被真正删除了。

正因如此,extundelete 的恢复逻辑就是通过扫描磁盘的 inode 区域和数据块区域,识别出“链接数为 0 但数据块尚未被新数据覆盖”的文件,然后重新构建 inode 与数据块的关联,将该文件恢复到指定位置。
extundelete 仅支持 Ext3 和 Ext4 文件系统,不支持 Ext2、XFS、Btrfs 等其他文件系统。
支持恢复单个文件、整个目录或所有被删除的文件,也支持按时间范围恢复(如恢复在特定时间段内删除的文件)。
恢复方式
适用场景
rm -rf * 但未在该分区写入新数据。在使用 extundelete 恢复数据前,建议先卸载目标分区或以只读的方式去挂载目标分区,这样做的目的是为了防止新数据写入覆盖掉旧数据(需恢复的数据),恢复的文件默认保存在非目标分区,这样可以避免二次损坏。
extundelete 的安装其实也非常简单:
#依赖安装
Ubuntu/Debian:sudo apt install -y gcc make e2fslibs-dev e2fsprogs
CentOS/RHEL:sudo yum install -y gcc make e2fsprogs-devel e2fsprogs
#下载源码编译安装
wget https://sourceforge.net/projects/extundelete/files/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar -xjf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure
make && make install
卸载目标分区
umount /dev/sdb1 #实际环境中将sdb1替换为实际分区设备名
查看可恢复的文件
extundelete /dev/sdb1 --inode 2 #查看根目录下的 inode 信息
extundelete /dev/sdb1 --list-deleted #列出所有被删除的文件
恢复文件或目录
#恢复单个文件
extundelete /dev/sdb1 --restore-file /path/to/file #替换为实际路径
#恢复整个目录
extundelete /dev/sdb1 --restore-directory /path/to/directory #替换为实际路径
#恢复所有被删除的文件
extundelete /dev/sdb1 --restore-all

恢复的文件默认保存在当前目录下的 RECOVERED_FILES 中。
ls –l RECOVERED_FILES/ #查看恢复的数据
任何工具都有局限性,注意事项及局限性如下:
对比一下其它恢复工具:
工具名称 | 支持的文件系统 | 恢复方式 | 支持的文件类型 | 恢复范围 | 安全机制 |
|---|---|---|---|---|---|
extundelete | Ext3/Ext4 | inode扫描、文件路径恢复、批量恢复、时间范围恢复 | 所有类型 | 单个文件/目录/所有文件 | 需卸载分区或以只读方式挂载,避免数据覆盖 |
TestDisk | FAT12/16/32、exFAT、NTFS、Ext2/3/4、HFS+、ReiserFS、XFS等 | 分区表修复、引导扇区重建、文件恢复 | 所有类型 | 分区级恢复(如丢失分区、引导故障) | 命令行/菜单驱动,支持跨平台(Linux/Windows/macOS) |
PhotoRec | 兼容多种文件系统(FAT、NTFS、Ext等) | 文件签名识别(通过文件头/尾) | 图片、视频、文档、音频等 | 文件类型恢复(如JPEG、PDF、MP4) | 命令行操作,可指定输出目录 |
foremost | 多种文件系统(FAT、NTFS、Ext等) | 文件头尾模式匹配 | 图片、文档、Office文件等 | 文件类型恢复(可配置文件格式) | 命令行操作,支持自定义配置文件 |
R-Linux | Ext3/Ext4 | 类似extundelete的inode扫描 | 所有类型 | 文件级恢复 | 命令行操作,支持在线恢复 |
Knoppix | 多种文件系统 | 系统急救、数据复制 | 所有类型 | 系统级恢复(可引导CD/USB) | 实时系统环境,避免原生系统干扰 |
Ubuntu Rescue Remix | 多种文件系统 | 数据恢复、系统修复 | 所有类型 | 系统级恢复(实时Linux环境) | 集成开源恢复工具,支持外部驱动器 |
Stellar | Ext4/Ext3、FAT32/16/12、NTFS等 | 文件/分区恢复、格式化恢复 | 所有类型 | 文件/分区级恢复 | 图形界面,支持预览与选择性恢复 |
说明:
extundelete 作为一款专注于 Ext3/Ext4 文件系统的开源数据恢复工具,凭借其基于 inode 的精准扫描机制和灵活的恢复方式(支持文件/目录/批量恢复及时间范围过滤),在误删文件、目录或分区未被覆盖的场景下展现出高效可靠的恢复能力。
其轻量级设计、命令行操作模式及对底层文件系统的深度解析,使其成为 Linux 环境下数据急救的优选工具之一。
对于复杂场景(如物理损坏或跨文件系统恢复),可结合 TestDisk、PhotoRec 等工具形成完整解决方案。
总体而言,extundelete 以其专业性、实用性和开源特性,为 Linux 用户的数据安全提供了坚实保障。
都看到这里了,觉得不错的话,随手点个赞👍 、推荐