用extundelete恢复Ext文件系统中误删的文件

extundelete恢复Ext文件系统中误删的文件

Linux有时候执行了 rm -rf 等操作误删了文件绝对是一件可怕的事情,好在有一些解决的办法可以临时救急。如果我们的Linux的文件系统属于ext文件系统,那么可以用一款叫做extundelete的工具。

工具原理

Linux下执行rm并不会真正删除文件,而是将该文件的inode节点所在的数据块释放。在数据块被系统重新分配前,这部分数据还是可以找回来的。因此删除文件后要立即umount这个分区,这样做其实是为了让外界不再写入,当然我们也可以只将误删文件所在的分区设为readonly模式。

强调一遍,如果要保证数据恢复成功率较高,那么在发现误删之后,应当第一时间将被误删的文件所在的分区锁住(即将该分区设置为readonly或者umount该分区)。

extundelete的安装与使用

CentOS为例

  1. 安装
$ sudo yum -y install e2fsprogs e2fsprogs-libs e2fsprogs-devel  #安装依赖
$ wget https://astuteinternet.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
$ tar -xjvf extundelete-0.2.4.tar.bz2
$ cd extundelete-0.2.4
$ ./configure
$ sudo make 2>&1 | tee make.log
$ sudo make install 2>&1 | tee make_install.log
  1. 使用

    • 查找要恢复的文件所在的分区
    $ df -h
    
    Filesystem             1K-blocks     Used   Available Use% Mounted on
    /dev/sda1                 495844    64150      406094  14% /boot
    
    • 假设我们需要恢复的文件在/boot分区中,通过如下方式恢复误删的文件。
    $ extundelete /dev/sda1 --restore-file hosts   #恢复单个文件,恢复名为hosts的误删文件
    
    $ extundelete /dev/sda1 --restore-files test/  #恢复一个目录,恢复名为test的误删目录
    
    $ extundelete /dev/sda1 –-restore-all          #恢复整个分区

    注:上面的命令会在当前路径下新建一个RECOVERED_FILES文件夹,并将恢复成功的文件放置在这个文件夹中。

经过实际测试,–-restore-all恢复地比较成功,在初次删除后可以很好的恢复文件及目录结构。而恢复单独的文件或者目录则未成功。

原文链接:https://my.oschina.net/looly/blog/261912


如果Linux的文件系统为xfs或者其他类型,推荐恢复工具PhotoRec,该工具支持多种平台,包括Windows,macOS等,且比较简单使用。

你可能感兴趣的:(Linux学习笔记,文件恢复,ext文件系统,linux文件恢复)