当我们 rm 删除一个文件或文件夹,是将这片磁盘区域标记为空闲,如果没有重新写入,数据不会丢掉。
方法1: 使用debugfs
进入丢失文件的目录
使用df -h ./ 命令查看此目录的挂载分区
假如丢失文件分区是在 /dev/sda1
sudo debugfs -w /dev/sda1
lsdel
lsdel后会列出来删除的各个文件。每行的第一个是一个文件的inode号。一个文件对应一个inode,每个分区inode有限。
恢复文件执行:
dump <inode> filename
方法2:使用extundelete工具
查看被删除文件的iNode:
sudo debugfs
open /dev/sda1
ls -d [filepath]
第二行按照自己的分区,可以通过df来查看分区。或df -T /home查看详细的用户所在分区的文件系统及使用情况。
安装 extundelete
cd /tmp
wget http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar -xjvf extundelete-0.2.4.tar.bz2
sudo apt-get install e2fsprogs
sudo apt-get install e2fslibs-dev
rm -f *.tar.bz2
cd ex*
./configure
make
安装成功后我们进入src文件夹下运行extundelete即可恢复近期删除的数据
cd src
sudo ./extundelete /dev/sda1 --restore-file [欲恢复的文件名]
还有其他如恢复全部文件或者恢复某个文件夹,具体可以–help 查看帮助。
方法3: 使用dlocate工具
假如误删 /usr/include,dlocate寻找所有丢失的安装包
安装 dlocate 工具:
sudo apt-get install dlocate
列出所有丢失的包:
dlocate --package-only /usr/include
重装丢失的包:
sudo apt-get install --reinstall $(dlocate --package-only /usr/include)
参考链接:
https://blog.csdn.net/ds1231h/article/details/69587960
https://blog.csdn.net/WillWinston/article/details/85346711