zoukankan      html  css  js  c++  java
  • LINUX使用extundelete进行数据恢复

    从删库到跑路不是一句笑话,不小心误删除操作很容易造成整个公司业务崩溃。所以真的误删除了,第一时间就是赶紧停机,不要再进行任何写入操作,把这块磁盘挂载到其他机器进行数据恢复

    这里我们介绍一下使用 LINUX 平台下的 extundelete 对误删除的数据进行恢复的操作

    一、安装恢复软件

    1、epel 仓库安装

    如果我们的源里面添加了 epel 仓库的话,我们可以直接使用下面的命令安装。

    1. yum install extundelete -y

    2、源码编译安装

    1. wget  http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2
    2. yum -y install  bzip2  e2fsprogs-devel  e2fsprogs  gcc-c++ make
    3. tar -xvjf extundelete-0.2.4.tar.bz2
    4. cd extundelete-0.2.4 ./configure
    5. make && make install

    三、删除数据查找

    因为我的数据路径比较深,所以我们需要一步步查找,可以先从根分区 inode 查找

    1. extundelete /dev/sdb1 --inode 2

    我把 Linux 系统上面误删的数据找回来了

    我们会看到 weapps 目录的 inode,

    1. extundelete /dev/sda5 --inode 24641537

    我把 Linux 系统上面误删的数据找回来了

    我们看到项目的 inode,

    1. extundelete /dev/sda5 --inode 24903688

    我把 Linux 系统上面误删的数据找回来了

    我们找到了最终删除数据的目录 upload

    1. extundelete /dev/sda5 --inode 24904454

    我把 Linux 系统上面误删的数据找回来了

    我们可以看到标称的 Deleted,这些数据就是我们要进行恢复的数据。

    四、数据恢复

    那我们就恢复指定目录,以当前分区为根分区进行路径设定,项目名进行掩盖

    1. extundelete /dev/sda5 --restore-directory /webapps/xxxx/upload

    我把 Linux 系统上面误删的数据找回来了

    因为磁盘数据一直在读写,所以有些文件之前的 inode 已经被重新分配了,导致部分数据无法恢复,数据最后会告诉我们有多少文件没有回复,但是大部分数据我们已经恢复了,这就是很重要的事情了。

    那我们查看一下回复的数据吧,软件会在当前目录生成一个目录 RECOVERED_FILES 里面就是我们恢复的数据。

    我把 Linux 系统上面误删的数据找回来了

    恢复全部数据可以使用命令

    1. extundelete /dev/sda5 --restore-all

    使用方法

    extundelete –help

    其中,参数(options)有:
    –version, -[vV],显示软件版本号。
    –help,显示软件帮助信息。
    –superblock,显示超级块信息。
    –journal,显示日志信息。
    –after dtime,时间参数,表示在某段时间之后被删的文件或目录。
    –before dtime,时间参数,表示在某段时间之前被删的文件或目录。

    动作(action)有:
    –inode ino,显示节点“ino”的信息。
    –block blk,显示数据块“blk”的信息。
    –restore-inode ino[,ino,…],恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的 RESTORED_FILES 文件夹中,使用节点编号作为扩展名。
    –restore-file ‘path’,恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的 RECOVERED_FILES 目录中。
    –restore-files ‘path’,恢复命令参数,表示将恢复在路径中已列出的所有文件。
    –restore-all,恢复命令参数,表示将尝试恢复所有目录和文件。
    -j journal,表示从已经命名的文件中读取扩展日志。
    -b blocknumber,表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
    -B blocksize,通过指定数据块大小来打开文件系统,一般用于查看已经知道大小的文件。

    在数据删除之后,首先要卸载被删除数据所在的磁盘或是分区,如果是系统根分区遭到误删除,就需要进入单用户模式下,将根分区以只读的方式挂载。

    原因:因为文件删除之后,仅仅是将文件的 inode 节点中的扇区指针清零,实际上文件还存在磁盘上面,如果磁盘以读写方式挂载,这些删除的数据块可能会被系统从新分配出去,这些数据块被覆盖之后,这些数据就真的丢失了,所以以只读的方式挂载,尽可能避免数据被覆盖。

  • 相关阅读:
    hdu 3018
    poj 1833 排列
    poj 1256 Anagram
    CF 548B Mike and Fun
    CF 548A
    【冰茶几专题】F
    【冰茶几专题】C
    535 C.Tavas and karafs
    [WA]cf 534 D. Handshakes
    cf 534C. Polycarpus' Dice
  • 原文地址:https://www.cnblogs.com/DataArt/p/10173910.html
Copyright © 2011-2022 走看看