• Linux文件恢复利器 ext3grep与extundelete


    介绍两款Linux文件恢复工具,ext3grepextundelete,可能在关键时刻会有所帮助。ext3grep仅对ext3文件系统有效,extundeleteext3ext4文件系统都有效

    一 实验环境
    软件环境
    vmware workstation 9.0.1
    ubuntu server 12.10 
    ext3grep 0.10.1
    extundelete 0.2.4
     
    外挂磁盘
    这里外挂2个磁盘来模拟需要恢复的设备。可以通过两种方式实现
    第一种:在虚拟机上添加2块虚拟磁盘,具体方法略
    第二种:通过dd命令用文件模拟块设备
    简单介绍下第二种方式的命令:
    cd /home 
    dd if=/dev/zero of=sdc1 bs=1M count=100    #块大小为1M,数量为100,也就是100M 
    mkfs.ext3 /home/sdc1                     #ext3文件系统格式化 
    mount /home/sdc1 /sdc  

    本实例采用第一种方式添加2块磁盘,添加后一块ext3格式化,另一块ext4格式化,然后挂载。具体操作过程省略

    mount 查看下 
    /dev/sdb1 on /sdb type ext4 (rw) 
    /dev/sdc1 on /sdc type ext3 (rw) 
    配置安装源列表
    ubuntu配置好安装源列表后,安装软件非常方便,以下是经过测试有效的安装源列表:
    root@ubuntu-test:/home# cat /etc/apt/sources.list 
    deb http://ubuntu.cn99.com/ubuntu/ quantal main restricted universe multiverse 
    deb http://ubuntu.cn99.com/ubuntu/ quantal-updates main restricted universe multiverse 
    deb http://ubuntu.cn99.com/ubuntu/ quantal-security main restricted universe multiverse 
    deb http://ubuntu.cn99.com/ubuntu/ quantal-backports main restricted universe multiverse 
    deb http://ubuntu.cn99.com/ubuntu-cn/ quantal main restricted universe multiverse 
    二、ext3grep恢复工具
    安装ext3grep
    ubuntu服务器上可以使用以下命令直接安装ext3grep,使用这种方式可以直接安装相关的依赖关系包,真是太省心了。
    aptitude install ext3grep 
    或者直接去官网下载源码包安装
    官网下载地址:https://code.google.com/archive/p/ext3grep/downloads
    编译安装需要先安装依赖
    apt-get install e2fslibs-dev  # Centos上用yum install e2fsprogs-devel

    如果不安装依赖会报错:

    checking for compiler with PCH support... yes
    checking for special C compiler options needed for large files... no
    checking for _FILE_OFFSET_BITS value needed for large files... no
    Package ext2fs was not found in the pkg-config search path.
    Perhaps you should add the directory containing `ext2fs.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'ext2fs' found
    checking ext2fs/ext2_fs.h usability... no
    checking ext2fs/ext2_fs.h presence... no
    checking for ext2fs/ext2_fs.h... no
    checking ext2fs/ext2fs.h usability... no
    checking ext2fs/ext2fs.h presence... no
    checking for ext2fs/ext2fs.h... no
    configure: error: Missing headers. Please install the package e2fslibs-dev from e2fsprogs, or http://e2fsprogs.sourceforge.net for the upstream tar-ball.

    然后编译安装软件

    tar xvf ext3grep-0.10.1.tar.gz 
    cd ext3grep-0.10.1
    ./configuremake && make install
     
    安装完后,可以用以下命令验证下:

    2 ext3grep查找被删除的文件
    ext3grep --ls --inode 2 /dev/sdc1 

    注意:这里只能看到/dev/sdc1 根目录下的文件与文件夹,不能显示目录下文件
    显示目录vmware-tools-distrib下的文件,列表这个目录节点号
    ext3grep --ls --inode 8193 /dev/sdc1 

    以上红线条标注的表示已经被删除掉的文件或目录
    如果想要显示出所有被删除文件的名字,用以下命令:
    ext3grep --ls --dump-names /dev/sdc1 > filename.txt      #将显示结果放在一个文件中 
    恢复单个文件
    恢复某个指定的文件,命令如下:
    ext3grep --restore-file VMwareTools-9.2.2-893683.tar.gz /dev/sdc1 

    然后在当前目录RESTORED_FILES目录下找到被恢复的文件

    如果是恢复目录下面的指定文件要加上相对路径
    ext3grep --restore-file vmware-tools-distrib/INSTALL.log /dev/sdc1 
     
    恢复整个设备上的文件
    ext3grep --restore-all /dev/sdc1  
    恢复指定时间点之前或之后的所有文件
    ext3grep --restore-all --after 1365661200 /dev/sdc1 #恢复Apr 11 14:20 2013之后被删文件 
    ext3grep --restore-all --before 1365661200 /dev/sdc1   #恢复Apr 11 14:20 2013之前被删文件 
    RHELUbuntu上测试,发现afterbefore这两个参数好像没起作用,具体啥原因没暂时还没有找到。
     
    三、extundelete恢复工具
    1 extundelete软件安装
    下载软件
    wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 
    安装e2fsprogse2fslibs
    sudo apt-get install e2fsprogs 
    安装e2fslibs-dev
    sudo apt-get install e2fslibs-dev 
    安装C++
    sudo apt-get install build-essential 
    安装extundelete
    tar -jxvf extundelete-0.2.4.tar.bz2 
    cd extundelete-0.2.4 
    ./configure --prefix=/usr/local/extundelete 
    make && make install 
    验证是否安装成功
    cd /usr/local/extundelete/bin 
    ./extundelete -v 

    查看被删除文件

    标记为”Deleted”的文件则是被删除的文件
     
    恢复指定的文件
    ./extundelete --restore-file aaa /dev/sdb1  

     
    完全恢复设备上文件
    ./extundelete --restore-all /dev/sdb1 
     
    恢复指定的时间点后被删文件
    指定一个时间点
    date -d "Apr 11 14:30 2013" +%s 
    1365661800 
    恢复这个时间点后的文件
    ./extundelete --restore-all --after “1365661800” /dev/sdb1 

    如果要恢之前的就用before参数。extundelete命令与after结合使用,在进行恢复时非常有用,可以过滤掉那太旧的文件,减小恢复压力。
     
     
  • 相关阅读:
    [BZOJ 1483] [HNOI2009] 梦幻布丁 (线段树合并)
    【匈牙利算法模板】BZOJ1191-超级英雄
    【线段树/区间开平方】BZOJ3211-花神游历各国
    【无源汇有上下界可行流】ACdream1211-Reactor Cooling
    【KMP求最小周期】POJ2406-Power Strings
    【KMP模板】POJ3461-Oulipo
    【费用流】BZOJ1877[SDOI2009]-晨跑
    【最大权闭合子图】BZOJ1497[NOI2006]-最大获利
    【最大流/费用流】BZOJ1834-[ZJOI2010]network 网络扩容
    【Trie图+DP】BZOJ1030[JSOI2007]-文本生成器
  • 原文地址:https://www.cnblogs.com/lazyfang/p/7699994.html
Copyright © 2020-2023  润新知