经过本人測试该工具支持ext3和ext4文件系统

当发现某个分区的数据被误删除后。要做的第一件事是立马卸载被误删除文件所在的分区,或者又一次以仅仅读方式挂载此分区。

这么做的原因事实上非常easy:删除一个文件,就是将文件inode节点中的扇区指针清除,同一时候,释放这些数据相应的数据块。而真实的文件还存留在磁盘分区中。可是这些被删除的文件不一定会一直存留在磁盘中,当这些释放的数据块被操作系统又一次分配时,那些被删除的数据就会被覆盖。

因此,在数据误删除后,立即卸载文件所在分区能够减少数据块中数据被覆盖的风险。进而提高成功恢复数据的机率。



1. 创建文件系统

[root@zw_test_26_74 /]#  mkfs -t ext4 /dev/sdb3



2.查看文件系统类型

[root@zw_test_26_74 /]# blkid /dev/sdb3  --查看文件系统类型

/dev/sdb3: UUID="b786e8d1-e8ac-4681-ad3a-ff7a39c07146" TYPE="ext4"



也能够用以下方法查看

[root@zw_test_26_74 ~]# file -s /dev/sdb3

/dev/sdb3: Linux rev 1.0 ext4 filesystem data (extents) (huge files)



3.创建一个delete文件夹。并挂载到刚创建的文件系统上,并创建文件,然后删除文件



[root@zw_test_26_74 /]# mkdir delete

[root@zw_test_26_74 /]# mount /dev/sdb3 /delete

[root@zw_test_26_74 /]# cd /delete

[root@zw_test_26_74 delete]# ls

lost+found

[root@zw_test_26_74 delete]# vi zw.txt      --加入一些内容

[root@zw_test_26_74 delete]# rm -rf zw.txt



4.下载

extundelete 主页:http://extundelete.sourceforge.net/

下载地址:http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2   --0.2.4版本号

        http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2  
--0.2.4版本号

           

[root@zw_test_26_74 /]# wget wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2



[root@zw_test_26_74 /]# tar -xvf extundelete-0.2.4.tar.bz2



[root@zw_test_26_74 extundelete-0.2.4]# cd /extundelete-0.2.4





[root@zw_test_26_74 extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete  && make && make install  

Configuring extundelete 0.2.4

configure: error: Can't find ext2fs library





这是由于extundelete依赖e2fsprogs。

[root@zw_test_26_74 extundelete-0.2.4]# yum -y install e2fsprogs  e2fsprogs-devel



安装e2fsprogs后再次configure 成功。





[root@zw_test_26_74 extundelete-0.2.4]# ./configure  --prefix=/usr/local/extundelete  && make && make install

Configuring extundelete 0.2.4

Writing generated files to disk

make -s all-recursive

Making all in src

Making install in src

  /usr/bin/install -c 'extundelete' '/usr/local/bin/extundelete'



5.查看工具版本号

[root@zw_test_26_74 /]# cd /usr/local/extundelete/bin

[root@zw_test_26_74 bin]# ./extundelete -v

extundelete version 0.2.4

libext2fs version 1.41.12

Processor is little endian.



6.卸载分区。注意假设是/ 根文件夹的删了,把磁盘挂载到其它机器做恢复



[root@zw_test_26_74 ~] fuser -k /delete         <-- 结束使用某分区的进程树

[root@www ~]# umount /delete                    <-- 卸载分区

[root@zw_test_26_74 ~]#  umount /dev/sdb3



7.使用extundelete查看分区上存在的文件

extundelete --inode 2 /dev/sdb2

# --inode 为查找某i节点中的内容,使用2则说明为搜索,假设需要进入文件夹搜索,仅仅需要指定文件夹I节点就可以



[root@zw_test_26_74 bin]#  extundelete --inode 2 /dev/sdb3

WARNING: Extended attributes are not restored.

Loading filesystem metadata ... 26 groups loaded.

Contents of inode 2:

0000 | ed 41 00 00 00 04 00 00 01 7b c6 56 05 7b c6 56 | .A.......{.V.{.V

0010 | 05 7b c6 56 00 00 00 00 00 00 03 00 02 00 00 00 | .{.V............

0020 | 00 00 00 00 20 00 00 00 e3 10 00 00 00 00 00 00 | .... ...........

0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................



Inode is Allocated

Group: 0

File mode: 16877

Low 16 bits of Owner Uid: 0

Size in bytes: 1024

Access time: 1455848193

Creation time: 1455848197

Modification time: 1455848197

Deletion Time: 0

Low 16 bits of Group Id: 0

Links count: 3

Blocks count: 2

File flags: 0

File version (for NFS): 0

File ACL: 0

Directory ACL: 0

Fragment address: 0

Direct blocks: 4323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

Indirect block: 0

Double indirect block: 0

Triple indirect block: 0



File name                                       | Inode number | Deleted status

Directory block 4323:

.                                                 2

..                                                2

lost+found                                        11

zw.txt                                           14             Deleted

.zw.txt.swp                                       13             Deleted

zw.txt~                                           12             Deleted





上面标记为deleted的,zw.txt 就是我误删的数据





8. 恢复:

root@zw_test_26_74 bin]# extundelete --restore-all  /dev/sdb3

WARNING: Extended attributes are not restored.

Loading filesystem metadata ... 26 groups loaded.

Loading journal descriptors ... 47 descriptors loaded.

Writing output to directory RECOVERED_FILES/

Searching for recoverable inodes in directory / ...

1 recoverable inodes found.

Looking through the directory structure for deleted files ...

Restored inode 14 to file RECOVERED_FILES/zw.txt

0 recoverable inodes still lost.

[root@zw_test_26_74 bin]# ll

total 1164

-rwxr-xr-x 1 root root 1187047 Feb 19 10:10 extundelete

drwxr-xr-x 2 root root    4096 Feb 19 11:20 RECOVERED_FILES

[root@zw_test_26_74 bin]# cd RECOVERED_FILES/
[root@zw_test_26_74 RECOVERED_FILES]# ll

total 4

-rw-r--r-- 1 root root 150 Feb 19 11:20 zw.txt



能够看到zw.txt 已经恢复到RECOVERED_FILES 文件夹下了。



9.扩展命令:

--restore-inode 12              # --restore-inode 按指定的I节点恢复

--restore-file zw.txt           # --restore-file 按指定的文件名称恢复

--extundelete --restore-all     # --restore-all  是所有恢复 ,默认全将恢复出来的文件放在当前路径 RECOVERED_FILES/ 文件夹下,文件名称为 file.I节点号


注意: RECOVERED_FILES文件夹生成在当前运行命令的文件夹以下啦!

linux恢复误删除文件-extundelete的更多相关文章

  1. Linux下面误删除文件使用extundelete工具恢复介绍

    操作系统版本:CentOS release 6.4 (Final)      软件版本:extundelete-0.2.4.tar.bz2 PS:该软件恢复文件系统仅支持ext2/ext3/ext4 ...

  2. Linux恢复误删除的文件或者目录(转)

    linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的. 那么问题来了: 对于linux下误删的文件,我们是否真的无法通过软件进行恢复呢? 答案当然是否定的,对于误删的文件 ...

  3. Linux恢复误删除的文件或者目录

    文章转载自:https://www.jianshu.com/p/662293f12a47 linux不像windows有个回收站,使用rm -rf *基本上文件是找不回来的. 那么问题来了: 对于li ...

  4. Linux之恢复误删除文件

    前言每当我们在生产环境服务器上执行rm命令时,总是提心吊胆的,因为一不小心执行了误删,然后就要准备跑路了,毕竟人不是机器,更何况机器也有 bug.那么如果真的删除了不该删除的文件,比如数据库.日志或执 ...

  5. git恢复误删除文件

    在git仓库管理下误删除文件一般会分为以下3种情况: 1.手动直接删掉,如选择-右击-删除 这种删除未修改本地仓库[版本库],只修改了工作区,直接git checkout -- fileName即可恢 ...

  6. grep恢复误删除文件内容(转)

    在 Linux 上如果事先没有用别名(alias)修改默认的 rm 功能,rm 后文件就会丢失,幸运的是,在一般的删除文件操作中,Linux 并不会立即清空存储该文件的 block 内容,而只会释放该 ...

  7. webStorm恢复误删除文件或工程

    背景: 提交git时可能由于没有提交所有文件,不知什么原因导致最近几天所写文件全部消失,所改文件全部恢复到以前.最终通过webstorm找回项目.下面总结通过webstorm找回误删文件,或恢复到历史 ...

  8. CentOS6.5恢复误删除的文件

    系统环境:CentOS release 6.5 (Final) 内核版本:2.6.32-431.el6.x86_64 需要的源码包:extundelete-0.2.4.tar.bz2 解压bz2包: ...

  9. lsof恢复误删文件

    用 lsof 恢复 误删除文件实验: 先模拟一个进程: [tiger@root:/home/tiger]$ echo "hello deletede" >> test. ...

随机推荐

  1. 如何用SQL语句在指定字段前面插入新的字段?

    如何用SQL语句在指定字段前面插入新的字段? 2007-10-17 09:28:00|  分类: 笔记|举报|字号 订阅     create proc addcolumn @tablename va ...

  2. 零基础入门学习Python(31)--永久存储:腌制一缸美味的泡菜

    知识点 pickle( 泡菜 ) 模块介绍: pickle模块作用是持久化的储存数据. 在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用, 而不是简单的放入 ...

  3. stl sort和qsort的使用

    好不容易使用了下stl的qsort函数,顺便和sort函数一起总结下: 很多时候我们都需要用到排序. 例如: 1 #include <iostream> #include <algo ...

  4. PHP:Mysql判断KEY是否存在 如果存在走修改 如果不存在走添加

    文章来源:http://www.cnblogs.com/hello-tl/p/7738113.html 0.PHP代码 <?php /** * POST 传参 * * 例子 添加修改 使用同一个 ...

  5. 第十一节:pandas统计函数

    1.pct_change()计算增长比例 2.cov()协方差 3.corr()相关系数 4.rank()数据排名 5.numpy聚合函数

  6. Windows和Linux启动虚拟环境

    快速跳转到Linux操作 Windows启动虚拟环境 <!--tab回车可以补全--> 安装virtualenv pip install virtualenv 创建虚拟环境 方法一: py ...

  7. pip提示Did not provide a commend

    今天小编想要查看一下自己安装的pip版本,并且使用pip查看selenium版本等,结果在cmd输入pip,提示Did not provide a commend,如下所示: 在网上查询了很多方法,比 ...

  8. input输入框的readonly属性-----http://www.w3school.com.cn/tags/tag_input.asp

    http://www.w3school.com.cn/tags/tag_input.asp input输入框的readonly属性 查询方法: 1.先找官方的文档,api 2.官方的有看不懂的再百度相 ...

  9. [1143] [CTSC2008]祭祀river(最大独立集 || 偏序集最大反链)

    传送门 网上说这是偏序集最大反链,然而我实在不理解. 所以我换了一个思路,先用floyd,根据点的连通性连边, 问题就转换成了找出最多的点,使任意两个点之间不连边,也就是最大独立集. ——代码 #in ...

  10. POJ 1330 (LCA)

    http://poj.org/problem?id=1330 题意:给出一个图,求两个点的最近公共祖先. sl :水题,贴个模板试试代码.本来是再敲HDU4757的中间发现要用LCA,  操蛋只好用这 ...