extundelete恢复ext4误删数据成败关键在于“快不快、准不准、停不停”:必须立即卸载或只读挂载目标分区,确认为ext3/ext4文件系统,优先处理非根分区;扫描inode定位目录后定向恢复,并严格验证文件完整性。
直接用 extundelete 恢复 ext4 上误删的业务数据,核心不是“能不能”,而是“快不快、准不准、停不停”。它只对未覆盖的 ext3/ext4 有效,且根分区成功率极低;恢复成败,80% 取决于删除后的前几分钟操作是否得当。
确认目标分区和文件系统类型
先搞清数据在哪块盘、什么格式,避免白忙一场:
运行
df -T /path/to/your/business/data
,看挂载点对应的是哪个设备(如
)和文件系统类型(必须是
或
)
若输出显示
、
或
,extundelete 完全不适用,需换工具(如 xfsrestore、photorec)
若路径是根目录(
),不要在运行中的系统上直接操作;应准备 Live USB 启动,否则系统日志和进程会持续覆盖关键元数据
立即冻结写入,防止数据被覆盖
这是最不可妥协的一步。只要分区还在读写状态,每过一秒,恢复希望就少一分:
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
对非系统盘(如
、
),执行
sudo umount /dev/sdXN
(例如
)
若提示 “target is busy”,用
sudo fuser -k -m /mount/point
强制终止占用进程(如
)
对无法卸载的分区(如根分区或关键挂载点),改用只读重挂载:
sudo mount -o remount,ro /mount/point
切记:此时禁用所有可能触发磁盘 I/O 的命令,包括
、
、
、
,甚至不要打开文件管理器
安装并扫描可恢复项
确保环境就绪后,再安装工具并定位目标:
安装依赖:
sudo yum install -y e2fsprogs-devel gcc gcc-c++
(CentOS/RHEL)或
sudo apt install -y e2fsprogs-dev build-essential
(Ubuntu/Debian)
下载编译 extundelete(推荐 v1.0):
,解压后
扫描根目录 inode(ext4 默认为 2):
sudo extundelete /dev/sdXN --inode 2
,查找你业务目录名,确认其状态为
并记下 inode 编号
如不确定路径,可用
sudo extundelete /dev/sdXN --restore-all
先拉出全部可恢复内容到
,再人工筛选(注意预留足够空间)
定向恢复并验证内容
恢复不是终点,验证才是关键。extundelete 拼回的是数据块+元数据,不代表内容完整:
按原路径恢复目录:
sudo extundelete /dev/sdXN --restore-directory /path/to/business/data
(路径必须与删除前完全一致)
恢复后文件默认存放在当前工作目录下的
子目录中,结构与原始路径一致
检查文件大小:
ls -lh RECOVERED_FILES/path/to/business/data
,对比备份或历史记录,明显偏小或为 0 字节说明已损坏
对关键配置文件或数据库文件,务必用
、
、
或应用自身校验机制验证内容可读性和逻辑完整性
/dev/sdb1ext4ext3xfsbtrfsntfs//data/backupsudo umount /dev/sdb1sudo fuser -k -m /datals -Rfinddutouchwget https://github.com/curu/extundelete/archive/refs/tags/v1.0.tar.gz./configure && make && sudo make installDeletedRECOVERED_FILES/RECOVERED_FILESfileheadmd5sum