文件恢复的原理

首先简单介绍一下 Linux 文件系统的最基本单元inode:

  • inode 译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode,另一部份是 block,block 是用来存储数据用的。

  • 而 inode 呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。

  • inode 为每个文件进行信息索引,所以就有了 inode 的数值。

  • 在 ext3 和 ext4 文件系统中,每个文件都是通过 inode 来描述其数据存放的具体位置,当文件被删除以后,inode 的数据指针部分被清零文件目录区没有太多变化。

  • 文件的读写都是通过 inode 来实现,当 inode 数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来

  • 当 ext3 和 ext4 文件系统中的元数据 metadata 发生变化时,相应的元数据 metadata 在日志文件会有一份拷贝。比如一个文件被删除了,它的 inode 信息会在日志文件中先保存一份,然后把要删除文件 inode 相关信息清零。

  • 这个日志文件是循环使用的,当操作过多时,删除的文件的 inode 日志记录会被新的数据替换,这就彻底丧失了根据 inode 找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会

linux 操作系统下可以使用 ls –id 或者 stat 命令来查看文件或者目录的 inode 值:

上面信息给出 cat2.jpg 文件的inode号码为:13

文件恢复工具

针对 Linux 下的 ext 文件系统来说,常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。

  • extundelete 是一个开源的数据恢复工具,支持 ext3、ext4 文件系统。

  • formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具。这个过程通常叫做数据挖掘(data carvubg)。formost 可以分析由 dd、Safeback、Encase 等生成的镜像文件,也可以直接分析驱动器。文件头和尾可以通过配置文件设置,也可以通过命令行开关使用 formost 内建的文件类型。formost 最初是由美国空军特别调查室(Air Force Office of Special Investigations)和信息系统安全研究中心(The Center for Information Systems Security Studies and Research)开发的,现在使用 GPL 许可。Foremost 支持恢复如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip

两种命令行工具 foremost 和 extundelete 二者相比,foremost 支持的文件系统比较多(包括 ext2、 ext3 、ext4、vfat、NTFS、ufs、jfs 等)和 extundelete 支持的文件系统较少(ext3、ext4)文件系统。不过 foremost 只能支持恢复特定格式的文件。

foremost

这款工具kali20自带,其它系统安装方法请到到网上搜索

删除文件:

 rm -f cat.jpg

先确定被删除文件的所在分区(因为每个分区都有一个日志文件),我的文件在/home/kali/Desktop/下属于/,而/上挂载了设备 /dev/hda1,查询目标目录的分区:

df

恢复:

sudo foremost -v -t jpg -i /dev/sda1
# -v 打印详细信息
# -t 指定文件类型
# -i 输入流

这里直接给我把被删除的jpg文件全恢复了。。

extundelete

这款工具kali可直接使用命令sudo apt install extundelete进行安装。

要注意:恢复过程不要在误删分区进行,谨防inode.block块相互覆盖(其实使用fooremost也应该注意这个问题)

为了避免以上的问题,下面演示使用的是一个硬盘镜像文件,使用命令 sudo mount attachment.img /mnt 将其挂载到 /mnt可以看到:


取消挂载:

sudo umount /mnt

查看可恢复的文件:

sudo extundelete attachment.img --inode 2 # inode = 2即当前目录的索引节点的位置

# 恢复inode为18的文件:
sudo extundelete attachment.img --restore-inode 18
# 恢复文件名为.cat.jpg的文件:
sudo extundelete attachment.img --restore-file .cat.jpg

回复所有文件:

sudo extundelete attachment.img --restore-all

会在当前目录生成RECOVERED_FILES,恢复的文件就在里面:

参考

https://www.cnblogs.com/liuhui-xzz/p/9666868.html
https://www.yunweiku.com/thread-18915-1-1.html

文件恢复原理Linux文件恢复工具-foremostextundelete相关推荐

  1. linux 恢复修改文件内容,Linux备份及恢复及Linux文件权限详解

    Linux备份及恢复及Linux文件权限详解 概述 一个系统管理员菜鸟不小心输入"chmod -R 777 /"从而导致了巨大的悲剧,使得整个系统遭到了严重的破坏.在日常管理中,我 ...

  2. java文件恢复软件,文件恢复软件 免费-文件恢复软件 免费版

    文件恢复软件 免费 文件恢复软件是一款功能丰富的文件恢复软件,文件恢复软件可以恢复那些被删除的文件,即使是回收站清空的文件也能恢复,不管是文档.图片.视频还是压缩包,都能重新找回来,有需要的朋友可以来 ...

  3. “Word在试图打开文件时遇到错误。请尝试下列方法:* 检查文档或驱动器的文件权限。* 确保有足够的内存和磁盘空间。* 用文件恢复转换器打开文件。”问题!...

    Word在试图打开文件时遇到错误. 请尝试下列方法: * 检查文档或驱动器的文件权限. * 确保有足够的内存和磁盘空间. * 用文件恢复转换器打开文件. 如下图: 让同事在他们自己电脑上,都是可以打开 ...

  4. RHEL目录和文件操作:Linux文件系统管理

    实验名称:RHEL目录和文件操作:Linux文件系统管理 某企业的 Linux 服务器中新增了一块硬盘/dev/sdb,请使用 fdisk 命令新建/dev/sdb1 主分区和/dev/sdb2 扩展 ...

  5. linux修改文件没有备份文件,linux文件或目录权限修改后如何恢复(备份了权限就能恢复)...

    操作系统 RHEL5 如果你在linux上执行了如下操作 chmod -R 777 / 或者 chmod -R 700 / 那么恭喜你,你的系统即将崩溃,重启之后,你进不了图形界面,而且很多服务都起不 ...

  6. 本地服务器文件恢复,本地服务器文件恢复

    本地服务器文件恢复 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 Windows ...

  7. Linux定期监视某文件变化,监控Linux文件变化,防止服务器被黑

    运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准 ...

  8. linux文件存储结构,Linux文件存储方式以及软硬链接

    在Linux中,文件包括常规文件.目录.符号链接等.为了方便理解,在本文中,文件指常规文件,目录指常规目录. 文件 1. 文件是如何存储的? 文件是由3部分组成 的: 文件名: dentry 文件元数 ...

  9. linux 文件隐藏权限,linux文件基本权限、默认权限、隐藏权限和ACL权限

    基本权限 文件属性rwx 每个文件当用ls -l查看时,都会显示文件的详细属性信息,其中在排在首位的共有10位字符信息 例如 -rw-r–rw-. 1 root root --.. 共有10位,第一位 ...

  10. linux中硬链接文件,科学网—Linux:文件的符号链接和硬链接 - 刘洋洋的博文

    参考:中国大学MOOC课程<Linux系统管理>,授课教师:颜晨阳. 推荐阅读: t.cn/RLXkhpc 1 符号(symbolic)链接 与Windows的快捷方式很像,这些文件很小, ...

最新文章

  1. SAP MM初阶之事务代码MIGO界面里的HOLD
  2. Math对象及相关方法
  3. 单元测试中使用mock最好不要使用easymock而应该使用powermock
  4. 计算机原理解读图,详细讲解仪器仪表测试系统,结构原理图拿走不谢
  5. Normal-Inverse Gamma Mixture简介
  6. 四则运算关于加括号的思路
  7. 【解题报告+感想感言】2019年第十届蓝桥杯【C++省赛B组】【第五题:迷宫】
  8. (笔记)Mysql命令drop database:删除数据库
  9. SqlServer中使用Mysql中的limit分页功能
  10. C++设计模式详解之工厂模式解析
  11. python 基础(二)
  12. 教你如何计算腰围~~
  13. 基于VUE实现的新闻后台管理系统-三
  14. Qt5下载与安装(Windows版)
  15. 阿里云ECS搭建在线IDE
  16. Linux基础到进阶(一)Linux基础命令、输入输出错误重定向、目录分类与作用、vi编辑器
  17. 三维游戏开发实战--狙击僵尸(unity开发)
  18. MAC | svn: E175002: DAV request failed: 411 Content length required.
  19. [电脑]电脑面前的自我保护
  20. nacos适配达梦、人大金仓数据库

热门文章

  1. SumatraPDF安装包
  2. 超详细大学生申请软件著作权登记模板及教程
  3. 启动startUML的时候报错“Exception EOleSysError in module StarUML.exe at 000AD559.
  4. IDEA配置java开发环境
  5. java流程图是什么形状,流程判断(流程图判断框什么形状)
  6. 汉字的 unicode 编码表
  7. B站【云E办】在线办公系统 项目源码
  8. 2021综述:计算机视觉中的注意力机制(续二):空间注意力
  9. AD18 制作PCB封装库时导入其3D模型+下载3D模型
  10. 【python】ssh密码字典攻击