误删文件后可恢复:一、extundelete恢复ext3/4文件;二、debugfs通过inode提取数据;三、photorec无文件系统扫描;四、检查LVM/Btrfs/ZFS快照或备份;五、dd+grep关键字提取。
如果您在Linux系统中误删了重要文件,且尚未重启系统或进行大量写入操作,则存在较高概率恢复数据。以下是几种可行的恢复方法:
一、使用extundelete工具恢复ext3/ext4文件系统中的文件
extundelete专为ext3和ext4文件系统设计,依赖于文件系统未被覆盖的日志信息,适用于删除后立即执行恢复的场景。
1、确认当前分区文件系统类型:运行df -T /path/to/deleted/file,检查输出中对应挂载点的Type字段是否为ext3或ext4。
2、卸载目标分区:执行sudo umount /dev/sdXN(如/dev/sda1),若提示设备忙,可尝试进入单用户模式或使用Live CD/USB启动后操作。
3、安装extundelete:在Ubuntu/Debian系统中运行sudo apt install extundelete;CentOS/RHEL需先启用EPEL源后执行sudo yum install extundelete。
4、执行恢复命令:运行sudo extundelete /dev/sdXN --restore-all,所有可恢复文件将生成在当前目录下的RECOVERED_FILES/子目录中。
5、若仅需恢复特定文件,使用sudo extundelete /dev/sdXN --restore-file "relative/path/to/filename",其中路径为相对于该分区根目录的路径。
二、通过debugfs交互式恢复ext系列文件系统中的inode文件
debugfs是ext2/ext3/ext4的底层调试工具,可在不依赖第三方软件的情况下,直接从inode提取已删除但未覆写的数据块内容。
1、确保目标分区已卸载:运行sudo umount /dev/sdXN,避免文件系统处于活动状态。
2、启动debugfs:执行sudo debugfs /dev/sdXN,进入交互界面。
3、列出已删除的inode:输入lsdel,显示所有标记为已删除但仍保留元数据的inode条目,记录目标文件对应的inode编号。
4、查看inode详情:输入stat ,确认其包含有效数据块地址及文件大小。
5、导出原始数据:退出debugfs后,运行sudo debugfs -R "dump /tmp/recovered_file" /dev/sdXN,将指定inode内容保存至临时路径。
三、利用photorec工具进行无文件系统结构的原始数据扫描
photorec忽略文件系统结构,直接扫描磁盘扇区中符合常见文件头尾特征的数据块,适用于格式化后、文件系统损坏或非ext系文件系统(如XFS、Btrfs)的恢复场景。
1、安装testdisk套件:在Ubuntu/Debian中执行sudo apt install testdisk;CentOS/RHEL中运行sudo yum install testdisk。
2、以只读方式启动photorec:运行sudo photorec /dev/sdX(注意此处指定整个磁盘设备,而非分区,如/dev/sda)。
3、在菜单中选择对应物理磁盘,按方向键切换至目标分区,按P确认选择。