Windows平台恢复误删数据so easy,但是linux就没那么简单了,因为没有“回收站”。BUT,如果有一天真的不小心误删了文件,那如何是好?那就借助恢复神器extundelete了。

以下均为本人虚拟机上操作,经测试,文件系统ext3/ext4均适用。

一、安装extundelete

1、需要安装依赖包,否则编译不通过

[root@reed /]#yum install e2fsprogs* -y

2、下载并安装extundelete

下载地址:https://sourceforge.net/projects/extundelete/files/latest/download

[root@reed /]#tar -jxvf extundelete-0.2.4.tar.bz2
[root@reed /]#cd extundelete-0.2.4
[root@reed /]#./configure --prefix=/usr/local/extundelete
[root@reed /]#make && make install

3、配置临时环境变量,如果永久则写到profile

[root@reed /]#PATH=$PATH:/usr/local/extundelete/bin

4、验证是否安装成功

[root@reed /]# extundelete -v
extundelete version 0.2.4
libext2fs version 1.41.12
Processor is little endian.

二、恢复已删除数据

为方便测试,新建了一个单独的分区/dev/sdb1,挂载/reed

[root@reed /]#mount /dev/sdb1 /reed

1、创建测试文件

[root@reed /]# cd /reed/
[root@reed reed]# cp ~/extundelete-0.2.4.tar.bz2 .
[root@reed reed]# echo "reed">>del.file
[root@reed reed]# ll
total 132
-rw-r--r-- 1 root root      5 Mar 16 07:20 del.file
-rw-r--r-- 1 root root 108472 Mar 16 07:20 extundelete-0.2.4.tar.bz2
drwx------ 2 root root  16384 Mar 16 06:45 lost+found

2、删除文件

[root@reed reed]# rm *
rm: remove regular file `del.file'? y
rm: remove regular file `extundelete-0.2.4.tar.bz2'? y
rm: cannot remove `lost+found': Is a directory
[root@reed reed]# ll
total 16
drwx------ 2 root root 16384 Mar 16 06:45 lost+found

3、查看/reed的inode值

[root@reed reed]# ls -id /reed
2 /reed

4、卸载/reed分区

[root@reed reed]# cd ..
[root@reed /]# umount /reed

5、恢复已删除数据

注:默认被删文件会恢复到当前目录下的RECOVERED_FILES目录

5.1先查看已删除文件

[root@reed /]# extundelete /dev/sdb1 --inode=2
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 8 groups loaded.
Group: 0
Contents of inode 2:
0000 | ed 41 00 00 00 10 00 00 ec 98 e8 56 e9 98 e8 56 | .A.........V...V
0010 | e9 98 e8 56 00 00 00 00 00 00 03 00 08 00 00 00 | ...V............
0020 | 00 00 00 00 00 00 00 00 41 02 00 00 00 00 00 00 | ........A.......
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 | ................
0080 | 1c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0090 | 6e 90 e8 56 00 00 00 00 00 00 00 00 00 00 00 00 | n..V............
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................Inode is Allocated
File mode: 16877
Low 16 bits of Owner Uid: 0
Size in bytes: 4096
Access time: 1458084076
Creation time: 1458084073
Modification time: 1458084073
Deletion Time: 0
Low 16 bits of Group Id: 0
Links count: 3
Blocks count: 8
File flags: 0
File version (for NFS): 0
File ACL: 0
Directory ACL: 0
Fragment address: 0
Direct blocks: 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
Indirect block: 0
Double indirect block: 0
Triple indirect block: 0File name                                       | Inode number | Deleted status
.                                                 2
..                                                2
lost+found                                        11
extundelete-0.2.4.tar.bz2                         12             Deleted
del.file                                          13             Deleted

标记为”Deleted”的文件则是被删除的文件

5.2恢复

[root@reed /]# extundelete --restore-all /dev/sdb1
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 8 groups loaded.
Loading journal descriptors ... 23 descriptors loaded.
Searching for recoverable inodes in directory / ...
2 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
[root@reed /]# ll RECOVERED_FILES/
total 112
-rw-r--r-- 1 root root      5 Mar 16 07:25 del.file
-rw-r--r-- 1 root root 108472 Mar 16 07:25 extundelete-0.2.4.tar.bz2

5.3大功告成。

当然还有很多其它参数,如可以指定恢复某个时间点的文件。

三、延伸知识:linux系统rm删除文件的原理

转自:http://blog.csdn.net/grantlee1988/article/details/8057228

很多时候,我们都会发现,某个进程在对当前文件读写,但是我们依然能够rm, 是不是很奇怪?而windows下面,肯定会报错,”当前文件正在被使用“, 这就得从linux下面删除文件的原理说起了。
  
  
   Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件都有2个link计数器:i_count 和 i_nlink。
  
   i_count的意义是当前文件使用者(或被调用)的数量,i_nlink 的意义是介质连接的数量(硬链接的数量);可以理解为i_count是内存引用计数器,i_nlink是磁盘的引用计数器。
  
  当一个文件被某一个进程引用时,对应i_count数就会增加;当创建文件的硬链接的时候,对应i_nlink数就会增加。
  
   对于删除命令rm而言,实际就是减少磁盘引用计数i_nlink。这里就会有一个问题,如果一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么会出现什么结果呢?当用户执行rm操作删除文件后,再执行ls或者其他文件管理命令,无法再找到这个文件了,但是调用这个删除的文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。这又是为什么呢?
  
  这是因为rm操作只是将文件的i_nlink减少了,如果没其它的链接i_nlink就为0了;但由于该文件依然被进程引用,因此,此时文件对应的i_count并不为0,所以即使执行rm操作,但系统并没有真正删除这个文件,当只有i_nlink及i_count都为0的时候,这个文件才会真正被删除。也就是说,还需要解除该进程的对该文件的调用才行。
  
  以上讲的i_nlink及i_count是文件删除的真实条件,但是当文件没有被调用时,执行了rm操作删除文件后是否还可以找回被删的文件呢?
  
  前面说了,rm操作只是将文件的i_nlink减少了,或者说置0了,实际就是将文件名到inode的链接删除了,此时,并没有删除文件的实体即(block数据块),此时,如果及时停止机器工作,数据是可以找回的,如果此时继续写入数据,那么当新数据就可能会被分配到被删除的数据的block数据块,此时,文件就会被真正的回收了

备注:根据以上原理,实际情况会出现以下问题,web服务器磁盘空间不够了,删除了所有无用日志还是先是磁盘空间不足,但是用du -sh /*发现磁盘空间占用的远小于硬盘总大小,这就是因为只删除了一个i_nlink,而还有其他进程在使用着这些log文件,apache或者tomcat,重启再看就ok了。

转载于:https://blog.51cto.com/luweikai/1751688

linux下使用extundelete恢复ext3/ext4分区数据相关推荐

  1. ubuntu下使用extundelete恢复使用rm删除的文件

    ubuntu下使用extundelete恢复使用rm删除的文件 一.原因 我这次文件误删主要是因为,在写Makefile文件时,没有考虑周全,在执行make clean时删除了源文件,总之虚惊一场.庆 ...

  2. 浅谈Linux标准的文件系统(Ext2/Ext3/Ext4)

    Ext 全称Linux extended file system, extfs,即Linux扩展文件系统,Ext2就代表第二代文件扩展系统,Ext3/Ext4以此类推,它们都是Ext2的升级版,只不过 ...

  3. Linux 下固态硬盘恢复误删除文件

    首发地址:学习日记 Linux 下固态硬盘恢复误删除文件 – 学习日记 上次分享了一则Linux下恢复误删除文件的视频,有朋友在视频下方询问是否机械硬盘,由此引出今天这则Linux下固态硬盘恢复误删除 ...

  4. Linux下eMMC,SD卡格式化和分区管理

    Linux下eMMC,SD卡格式化和分区管理 一.Linux下查看eMMC设备是否正确识别 在命令行终端,输入ls /dev/mmc* -l,查看eMMC是否成功识别 dev目录下成功识别到了eMMC ...

  5. mtd分区创建linux,浅析linux下mtd设备onenand存储器的分区和节点创建流程及yaffs2文件系统挂载...

    浅析linux下mtd设备onenand存储器的分区和节点创建流程及yaffs2文件系统挂载 在arch/arm/mach-pxa/luther.c这个产品平台文件中,即: MACHINE_START ...

  6. EXT2/EXT3/EXT4文件系统数据恢复工具开发计划

    D-Recovery For Linux数据恢复软件已经开发完成,现在把研发计划贴出来,留个纪念. EXT2/EXT3/EXT4文件系统数据恢复工具开发计划 EXT2/EXT3/EXT4是Linux下 ...

  7. mysql ext3 ext4_给你一个惊喜:EXT3/EXT4文件系统数据删除后的数据恢复

    所谓的日志型文件系统,就是文件系统中做了什么操作,操作系统就把它记录下来,比如创建一个新文件,操作系统会在日志文件中记录下来, 删除一个文件,操作系统也会在日志文件中记录下来,记录的信息包括文件名称. ...

  8. 在AIX或Linux下,如何查看磁盘是否包含数据?

    在AIX或Linux下,如何查看磁盘是否包含数据? 真题1.在AIX或Linux下,如何查看磁盘是否包含数据? 答案:在AIX下,可以使用lquerypv -h来查看磁盘是否包含数据,或磁盘头是否被d ...

  9. Linux下安装mysql以及配置用户与数据导入

    Linux下安装mysql以及配置用户与数据导入 yun安装mysql linux下有一个很神奇的东西叫yum,只要有源,用yum来安装是一件非常容易的事,什么都不用管,它会为你解决好一些软件依赖的问 ...

最新文章

  1. 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)
  2. python pandas DataFrame 字符串转日期格式
  3. 人工智能如何彻底改变全球物流和供应链管理
  4. 教你阿里云企业版服务器配置到底怎么选?阿里云ECS相关术语汇总
  5. Asp.Net MVC1.0正式版发布
  6. golang.org/x/lint安装失败
  7. Swift UI开发初探
  8. 首款预装鸿蒙2.0系统新机入网,4G版!
  9. 【报告分享】2020城市大脑规划建设与应用研究报告.pdf(附下载链接)
  10. sun.java2d.fontpath,java起用默认浏览器
  11. 计算机课有什么作业,计算机组成原理课堂作业
  12. 【leetcode】数组的度-两个map关联初探
  13. 2021 年 338 道架构技术面试大厂高频题汇总(附答案详解)
  14. 智慧园区大数据平台建设方案(ppt)
  15. 最新版校园招聘进大厂系列----------(5)百度篇 -----未完待续
  16. 【异常解决】DolphinScheduler-2.0.5 工作流实例无法调度和停止异常
  17. 如何区分电梯卡为id卡ic卡_门禁卡ID卡和IC卡从外表怎么区分?
  18. 服务器文档链接电脑,服务器怎么链接电脑
  19. latex:ieee摘要两端对齐
  20. mysql按小时sum()求和_Mysql按周,按月,按日,按小时分组统计数据

热门文章

  1. oracle查询grant信息,Oracle学习笔记(四)
  2. java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
  3. Python 统计一行字符中单词的个数_Python 经典练习题-015
  4. mysql数据库增左右连接_快速增加MYSQL数据库连接数负载能力
  5. 软件工程专业学生如何在研二期间通过六级——我的六级之路
  6. 信息系统项目管理师-项目采购管理考点笔记
  7. CentOS6中怎样将jdk1.7升级到1.8
  8. 信息系统项目管理师-项目成熟度模型、量化项目管理核心知识点思维脑图
  9. vue中使用moment来实现导出excel时添加格式化的时间戳
  10. Vue中怎样引入Element