1、  Linux运维人员学会备份至关重要

 

 

删除文件恢复

第一种情况

  当前系统有多个用户,其中一个用户对文件进行修改,则另一个用户对文件进行了删除操作,那么,这时候如何进行操作?

     解决方法:

          通过文件打开的PID以及打开文件的文件句柄

          lsof | grep –i delete

          cp /proc/file_pid/fd/句柄   /path/file_name

 

 

 

删除以后不要再对磁盘进行任何操作 以免恢复不可逆

 

1.  linux打开一个文件有一个对应的文件进程id生成在proc下面   只要进程id存在 即使文件被删除我们根据进程id就可以恢复

 

 

实验: 启用两个登录 并都是root用户登录

Cp /etc/issue .  此时的点表示当前目录 etc下的issue文件复制到当前目录

用户1cat >> issue    并输入this is test

用户2 rm –rf issue

        ls查看是否被删除

        lsof –i |grepdelete   Lsof查看进程号  lsof | grep –i delete  查看我后端有哪些文件被删除

        cd /proc/2747/fd/

        cp  1 /tmp/issue  复制后并查看cat/tmp/issue  此时的1为上一命令的句柄

 

 

wKioL1S0zsqiXcIgAAAtYDW6eUw254.jpg

解释: cat说明是一个命令   2747pid    root用户操作的

1w 打开文件进程它所使用的一个文件句柄  根据这个恢复

最后面字段的意思  我打开一个文件 状态是deleted状态  但是有进程存在

 

第二种情况:

当前系统只有一个用户在登录,对文件进行了误删除操作,那么这个时候如何进行操作 前提该文件系统为日志文件系统

 

注意事项以及解决思路:

1. 停止对当前分区做任何操作 防止其他文件把删除文件的inode值覆盖

2. 通过dd命令对当前分区进行备份,防止通过第三方软件恢复失败,造成数据的丢失

  dd if=/path/filename  of=/dev/sdb1

 3.  通过umount对当前设备分区基于卸载 umount /dev/sda  or umount /mount_point

 4.  下载并安装第三方开源工具,进行对丢失的文件进行搜索并进行还原

 5

 wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

 6 编译安装  安装此软件时必须安装依赖的库文件  yum install e2fsprogs*  -y

         对源码包解压

         相应的命令进行对源码文件配置属性 ./configure or cmake(mysql编译的时候用的到)

        make && make install  编译以及编译安装

 

extundelete相关命令安装成功后然后利用这个命令对我们丢失文件所在的目录或者设备进行全文搜索

1.  extundelete –node 2/dev/sdb1 

 2.  extundelete –restore-inodeinode /dev/sdb1

 3.  extundelete –restore-all  /dev/sdb1

 4.  文件目录 时间  extundelete --help

 

 

实验:

1.  建立一单独的分区为日志文件系统 并挂载

blkid /dev/sdb1 查看是否为日志文件系统

mount /dev/sdb1/root/test

2.  mkdir /root/test/test_directory –p

cp/etc/passwd  /etc/issue  /etc/inittab .  复制三个文件到test_directory目录

rm –rf  test_directory/

umount /dev/sdb1

3. wget  http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2

  tar–jxf  *****.bz2

  安装之前安装依赖包yuminstall e2fsprogs*  -y

  make时候提示 以下警告忽略

 wKiom1S0zhKyjwA3AAAojoZD0hI063.jpg

4.安装成功后

 

1.  extundelete –node 2/dev/sdb1 

 2.  extundelete –restore-inodeinode /dev/sdb1  恢复特定inode号文件

  3. extundelete –restore-all /dev/sdb1 恢复所有文件

 

 

恢复后为 挂载

  mount /dev/sdb1  /root/test

  将一下三个文件拷贝到原有文件系统sdb1

wKioL1S0zwCinpU1AAAsomut8fc778.jpg