1.前言
在使用linux系统操作时,如果使用rm等命令将文件误删,不要着急,不要在该目录下创建新的文件,可使用本文介绍的两种方法恢复已删除文件。话不多说,可以使用debugfs和extundelete两种方法恢复。
假设有一文件test.txt被误删,现在分别使用这两种方法恢复文件。
2.利用debugfs 文件恢复
此方法在centos上可能不适用,建议使用第二种方法。
首先查看删除文件所在分区,假设在/dev/sda1
df -Th
然后打开debugfs进入该分区,并查看所删除的文件
debugfs /dev/sda1
ls -d /root/Desktop
记下删除文件test.txt前面的索引号:<9200411>
查看该索引的详细信息
记录下block = 36700424,offset = 3328
输入q退出debugfs。
输入恢复命令
dd if=/dev/sda5 of=/root/Desktop/test.txt bs=3328 count=1 skip=36700424
其中bs = offset,skip = block,如此文件已恢复。
3.extundelete文件恢复
和debugfs方法一样,可以先查找删除文件的分区,索引。
利用以下任一命令即可恢复
extundelete /dev/sda1 --restore-directory dirname #恢复/dev/sda1分区的dirname文件夹
extundelete /dev/sda1 --restore-files filename #恢复/dev/sda1分区的filename文件,该文件存在
extundelete /dev/sda1 --restore-file filename #恢复/dev/sda1分区的filename文件,该文件已删除
extundelete /dev/sda1 --restore-inode inode1,inode2 #恢复/dev/sda1分区的索引为inode1和inode2的文件
恢复后的文件在当前目录下的RECOVERED_FILES文件夹。
比如使用–restore-directory 恢复Desktop文件夹
进入到RECOVERED_FILES文件夹会发现text.txt已经恢复好了。
如果采用–restore-inode,恢复出的文件名为file.inode