误删文件后恢复数据

本文档主要以CentOS7操作系统为例,介绍如何使用开源工具Extundelete快速恢复被误删除掉的数据。

背景信息

    在Linux下,基于开源的数据恢复工具有很多,常见的有debugfs、R-Linux、ext3grep、extundelete等,比较常用的有ext3grep和extundelete,这两个工具的恢复原理基本一样,只是extundelete功能更加强大。如果您不小心误删除数据,并且Linux系统也没有与Windows系统下回收站类似的功能,您可以方便快速安装extundelete工具。

    extundelete工具能够利用inode信息结合日志去查询该inode所在的block位置,以此查找和恢复所需的数据。该工具最给力的一点就是支持ext3/ext4双格式分区恢复,基于整个磁盘的恢复功能较为强大。

    在数据被误删除后,首先要做的是卸载被删除数据所在的磁盘或磁盘分区。因为将文件删除后,仅仅是将文件的inode结点中的扇区指针清零,实际文件还存储在磁盘上,如果磁盘以读写模式挂载,这些已删除的文件的数据块就可能被操作系统重新分配出去,在这些数据块被新的数据覆盖后,误删除的数据就无法恢复。所以,以只读模式挂载磁盘可以尽量降低数据块中数据被覆盖的风险,提高恢复数据成功的几率。

说明:在实际线上恢复过程中,切勿将extundelete安装到您误删的文件所在硬盘,这样会有一定几率将需要恢复的数据彻底覆盖。

 

操作步骤

使用开源工具Extundelete快速恢复被误删的数据的操作步骤如下:

步骤一:部署extundelete工具

运行以下命令,部署extundelete工具:

wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
yum -y install  bzip2  e2fsprogs-devel  e2fsprogs  gcc-c++  make    # 安装相关依赖和库
tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure # 可通过--prefix=/usr/local/extundel指定安装目录
make && make install # 执行安装
extundelete -v # 验证安装结果

 

步骤二:使用extundelete模拟数据误删除后恢复的过程

完成以下操作,使用extundelete模拟数据误删除后恢复的过程(示例中,模拟删除的数据在数据盘中而非系统盘):

  1. 检查磁盘(数据盘)和可用分区,并对/dev/vdb进行分区和格式化。具体操作,请参见格式化和挂载数据盘
    fdisk -l
  2. 将分区后的磁盘(数据盘)挂载到/testdel目录下,然后在/testdel下新建测试文件hello,并写入内容test
    mkdir /testdel                               #新建testdel目录
    mount /dev/vdb1 /testdel                     #将磁盘挂载到testdel目录下
    echo test > hello                            #写入测试文件
  3. 记录文件hello的md5值。md5sum命令用于生成和校验删除前和恢复后两个文件的md5值。
    md5sum hello
  4. 模拟删除hello文件。
    rm -rf hello
    cd ~
    fuser -k /testdel #结束使用某分区的进程树(确认没有资源占用的话,可以跳过此步)
  5. 卸载数据盘。
    umount /dev/vdb1 # 任何的文件恢复工具,在使用前,均要将要恢复的分区卸载或挂载为只读,防止数据被覆盖使用
    
    # 千万记住:误删除数据了,一定要第一时间将数据所在磁盘卸载或挂载为只读分区,防止写入文件 inode 被重新分配。如果误删的是根分区的数据,那么立即进去单用户模式,将根分区只读挂载。又引申出一个问题,做系统分区的时候,最好不要只分一个根分区,像这样的情况很难办。
  6. 使用extundelete工具恢复文件。
    1. extundelete --inode 2 /dev/vdb1 # 为查找某i节点中的内容,使用2则说明为整个分区搜索,如果需要进入目录搜索,只须要指定目录I节点即可。这是可以看到删除的文件名和inode。
    2. /usr/local/bin/extundelete --restore-inode 12  /dev/vdb1  # 恢复删除的文件

      这个时候会在执行命令的同级目录下出现RECOVERED_FILES目录

      简单介绍一下常用参数

      --after dtime  时间参数,表示在某段时间之后被删除的文件或目录
      --before dtime  时间参数,表示在某段时间之前被删除的文件或目录

      简单介绍一下常用动作

      --inode ino  显示节点 ino 的信息
      --block blk  显示数据块 blk 的信息

      --restore-inode ino  表示恢复节点 ino 的文件,用来恢复单个文件
      --restore-file path  表示恢复指定路径下的文件,用来恢复目录下所有文件
      --restore-all  表示恢复所有被删除的目录跟文件

  7. 通过md5sum命令查看恢复后RECOVERED_FILES文件的md5值。
    md5sum RECOVERED_FILES

    查看删除前的hello和恢复后的RECOVERED_FILES两个文件的md5值是否一致,如果一致,则数据恢复成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值