误删ext4文件后可恢复:一、用extundelete依inode还原;二、用photorec按文件头无结构扫描;三、用debugfs手动提取已删inode;四、用scalpel配置规则快速批量恢复。

如果您在UOS操作系统中误删了ext4分区上的文件,且未覆盖写入新数据,则这些文件的原始数据块可能仍存在于磁盘中。以下是恢复此类误删文件的几种可行方法:
一、使用extundelete工具恢复
extundelete是专为ext3/ext4文件系统设计的开源恢复工具,依赖于文件系统日志中的inode信息,在未覆写情况下可还原已删除文件的目录结构和内容。
1、打开终端,安装extundelete依赖包:sudo apt update && sudo apt install e2fsprogs。
2、下载并编译extundelete源码(UOS默认源中通常不包含):wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 && tar -jxvf extundelete-0.2.4.tar.bz2 && cd extundelete-0.2.4 && sudo ./configure && sudo make && sudo make install。
3、卸载目标ext4分区(如/dev/sdb1):sudo umount /dev/sdb1;若为根分区则需从Live UOS启动盘进入后操作。
4、执行恢复命令,将文件恢复至指定目录(例如/home/user/recover):sudo extundelete /dev/sdb1 --restore-all --restore-directory /path/to/deleted/folder。
二、使用photorec工具进行无文件系统恢复
photorec忽略文件系统结构,直接扫描磁盘扇区识别文件头签名,适用于ext4分区元数据损坏或inode已被清除的场景,但恢复后的文件名和目录结构将丢失。
1、安装testdisk包(含photorec):sudo apt install testdisk。
2、运行photorec:sudo photorec。
3、在交互界面中选择对应物理磁盘(非分区),按方向键切换至目标ext4所在磁盘,回车确认。
4、选择分区类型(若识别为“Intel”则选“Other”,ext4在此类中支持良好),回车进入文件类型筛选。
5、按b键启用文件类型过滤,用空格键勾选需恢复的文件格式(如JPEG、PDF、DOCX等),回车继续。
6、指定输出目录(必须位于其他未被写入的分区上):/home/user/phorec_output,确认后开始扫描。
三、使用debugfs手动提取已删除inode数据
debugfs是e2fsprogs套件中的底层ext系列文件系统调试工具,适用于知晓确切inode号或能通过日志定位关键inode的情况,操作精确但需一定文件系统知识。
1、获取目标分区超级块信息及最近删除记录:sudo dumpe2fs -h /dev/sdb1 | grep -E "Inode count|Block count"。
2、进入debugfs交互环境:sudo debugfs /dev/sdb1。
3、列出已删除但未释放的inode:lsdel,输出中包含时间戳、链接数、大小与路径提示(若有)。
4、对指定inode(如12345)尝试导出原始数据:dump /tmp/recovered_file.bin。
5、退出debugfs:quit,随后使用file命令识别文件类型:file /tmp/recovered_file.bin,再重命名为对应扩展名。
四、挂载为只读并使用scalpel快速扫描
scalpel是一款基于配置文件定义文件头尾特征的静态恢复工具,扫描速度快,适合大容量ext4分区的批量恢复,但需预先配置匹配规则。
1、确保目标分区以只读方式挂载:sudo mount -o ro,remount /dev/sdb1。
2、安装scalpel:sudo apt install scalpel。
3、编辑配置文件启用常用格式:sudo nano /etc/scalpel/scalpel.conf,取消注释JPEG、PNG、TXT、ZIP等对应行首的#号。
4、执行扫描,结果输出至指定目录:sudo scalpel -o /home/user/scalpel_output /dev/sdb1。
5、检查输出目录中生成的子目录(如jpeg、png),每个文件以序号命名,需人工核对内容有效性。











