linux基础(5)--恢复误删除的文件--RHEL6.5

1. 原理

   linux下执行rm -f 命令文件并没有被实际的删除。除非inode被删除或者覆盖,inode文件inode可以使用ls -i 查看。

  此处的误删文件恢复只适用于RHEL6X系列,不适用于RHEL7X系列。RHEL7系列的误删恢复后续会讲解。

  此处使用的恢复软件是extundelete,安装包: extundelete-0.2.4.tar.bz2

2. 安装

  1)安装上传软件。

      此处使用的windows远程工具是xshell。

      yum install lresz -y      #安装rz, sz

      rz 选择上传的文件。

  2) 安装extundelete

      解压

      tar -jxvf extundelete-0.2.4.tar.bz2  

     进入解压后的目录后三把斧(./configure, make , make install)

     ./configure时报错,提示缺少依赖,安装依赖:

      rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm

      也可: yum --y install e2fsprogs.x86_64 e2fsprogs-devel.x86_64 e2fsprogs-libs.x86_64

      在此./configure

      make

      make install

      此时命令被安装到了/usr/local/bin/中。

  3)创建模拟环境

     新建一个分区sda2

     fdisk /dev/sda

     .......(分区新建过程不再赘述)

     新建完分区此时ls /dev/sda*并未发现sdb2。

     reboot系统

     重启完系统之后: ls /dev/sda*此时出现新分区/dev/sda2

     格式化分区

     mkfs.etx4 /dev/sda2

     新建分区挂载点

     mkdir /sda2

     将新建的分区挂在到/sda2

     mount /dev/sda2 /sda2

     检查挂载是否成功

     df -h

     拷入实验用的文件

     cp /etc/passwd /sda2   #测试文件

     cp /etc/hosts /sda2       #测试文件

     mkdir -p /sda2/a/b/c

     touch /sda2/a/empty.txt   #空文件

     cd /sda2

     rm -rf hosts passwd a    #删除这三个测试文件

  4)文件恢复

     文件被误删后第一时间要卸载掉文件所在的分区,防止已删文件的节点被使用从而导致无法恢复。

     umount /dev/sdb2

     查看文件节点信息,注意被删除的文件的节点号。

     extundelete /dev/sda2 --inode 2     

     使用inode恢复单个文件

     extundelete /dev/sda2 --restore-inode 文件节点号

     当前文件下生成目录: RECOVERED_FILES, 进入目录目录内文件即为恢复的文件,可使用diff检查是否与源文件一致, 检查一致后将将新建分区重新挂载,将恢复的文件拷到原位置即可。

     使用文件名恢复单个文件

     extundelete /dev/sda2 --restore-file 文件名

     使用文件名恢复目录

     extundelete /dev/sda2 --restore-directory a     #发现空目录和空文件未恢复

     恢复分区内的搜有文件

     extundelete /dev/sda2 --restore-all

3. 小结

     不能恢复空目录和空文件。因为是空文件,即使未恢复也不影响,重新新建即可。

 

你可能感兴趣的:(自动化运维--基础)