文件恢复的原

简单介绍

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 值

[root@crushlinux ~]# stat install.log

File: “install.log”

Size: 34226 Blocks: 80 IO Block: 4096 一般文件

Device: 303h/771d Inode: 4672098 Links: 1

Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)

Access: 2014-05-06 14:49:22.000000000 +0800

Modify: 2013-05-04 22:24:21.000000000 +0800

Change: 2013-05-04 22:24:38.000000000 +0800

[root@crushlinux ~]# ls -i install.log

4672098 install.log

上面信息给出install.log文件的inode号码为:4672098

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。

针对 Linux 下的 ext 文件系统来说,常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。extundelete 是一个开源的数据恢复工具,支持 ext3、ext4 文件系统,其官方站点位于 http://extundelete.sourceforce.net/,目前最新稳定版本为 0.2.0。

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

模拟实验环境:

[root@crushlinux ~]# cd ~/Desktop

[root@crushlinux Desktop]# ls

desktop.png

[root@crushlinux Desktop]# rm -f desktop.png

[root@crushlinux Desktop]# cd /root/

下载并编译安装 foremost:

[root@crushlinux ~]# wget http://foremost.sourceforge.net/pkg/foremost-1.5.7.tar.gz

[root@crushlinux ~]# tar xf foremost-1.5.7.tar.gz -C /usr/src/

[root@crushlinux ~]# cd /usr/src/foremost-1.5.7/

[root@crushlinux foremost-1.5.7]# ls

api.c cli.c dir.c extract.c foremost.8.gz helpers.c main.h ole.h state.c

CHANGES config.c engine.c extract.h foremost.conf main.c Makefile README

[root@crushlinux foremost-1.5.7]# make && make install

先确定被删除文件的所在分区,我的文件在/root/Desktop/下属于/,而/上挂载了设备 /dev/hda3

[root@crushlinux foremost-1.5.7]# mount

/dev/hda3 on / type ext3 (rw)

[root@crushlinux foremost-1.5.7]# foremost -t png -i /dev/hda3

恢复完成后会在你的当前所在目录中建立一个 output 目录,并在在 output 目录下会建立 png 子目录下会包括所有已经恢复回来的 png 格式的文件。

注意:恢复回来的文件,文件名已经改变,另外 output 目录下有一个 audit.txt 文件是恢复成功文件的列表。

[root@crushlinux output]# pwd

/usr/src/foremost-1.5.7/output

[root@crushlinux output]# ls

audit.txt png

[root@crushlinux output]# cd png

[root@crushlinux png]# ls -l 38019080.png

-rw-r--r-- 1 root root 13024 05-06 14:39 38019080.png

原本叫 desktop.png 的文件恢复回来之后文件名改成 38019080.png,需要自己找哦!!

恢复多种类型文件

[root@crushlinux abc]# ls

file.doc file.pdf

[root@crushlinux abc]# rm -f *

[root@crushlinux abc]# ls

[root@crushlinux abc]# foremost -v -t pdf,doc -i /dev/hda1 -o /tmp/recover

[root@crushlinux abc]# ls

file.doc file.pdf

[root@crushlinux abc]# rm -f *

[root@crushlinux abc]# ls

[root@crushlinux abc]# foremost -v -t pdf,doc -i /dev/hda1 -o /tmp/recover

foremost version 1.5.7 by Jesse Kornblum, Kris Kendall, and Nick Mikus.

foremost [-v|-V|-h|-T|-Q|-q|-a|-w-d] [-t ] [-s ] [-k ]

[-b ] [-c ] [-o

-V - display copyright information and exit

显示版权信息并退出

-t - specify file type. (-t jpeg,pdf ...)

指定的文件类型

-d - turn on indirect block detection (for UNIX file-systems)

打开间接块检测

-i - specify input file (default is stdin)

指定输入文件

-a - Write all headers, perform no error detection (corrupted files)

写出所有头文件,检测是否有错误

-w - Only write the audit file, do not write any detected files to the disk

只写审计文件,不写所有检测到的文件到磁盘

-o - set output directory (defaults to output)

指定输出目录

-c - set configuration file to use (defaults to foremost.conf)

设置配置文件并使用

-q - enables quick mode. Search are performed on 512 byte boundaries.

可使用快速模式,搜索是在512字节边界进行。

-Q - enables quiet mode. Suppress output messages.

可使用快速模式,抑制输出消息。

-v - verbose mode. Logs all messages to screen

详细模式,记录所有消息到屏幕

切记:硬盘有价,数据无价!!

linux 清除安装失败的文件夹,恢复Linux误删除文件系列之foremost安装工具使用方法...相关推荐

  1. 不小心删除了文件能恢复吗 误删除文件怎么找回

    电脑是我们平时工作或者生活.学习中使用频率非常高的电子设备,已经成为了我们日常生活中不可或缺的一部分.删除文件是电脑使用过程中常见的一种操作,因为电脑的储存空间是有限的,我们需要对电脑数据进行清理,避 ...

  2. linux下仅仅有rman备份集的异机不同文件夹恢复

    昨天在客户那里做了一次rman异机的恢复,把生产库弄一份给測试库用,总库大概80G,总共花费了2个小时,当时客户的环境是windows 11.2.0.3,今天早晨在linux下又一次測试了一下,记录下 ...

  3. linux下剪切文件怎么恢复,linux下文件夹的创建、复制、剪切、重命名、清空和删除命令...

    在home目录下有wwwroot目录,wwwroot下有sinozzz目录,即/home/wwwroot/sinozzz 一.目录创建 在/home/wwwroot目录下新建一个sinozzz123的 ...

  4. mysql从data文件夹恢复数据

    此文操作的前提: mysql的data文件夹里的数据未丢失 本次操作在Mac上操作, linux一样, wins未尝试过, 应该差不多 第一步: 备份data文件夹 做好备份是数据操作的前提; 第二步 ...

  5. linux云同步文件夹,在Linux系统上备份Dropbox同步文件夹的方法

    本文介绍在Linux系统上备份Dropbox同步文件夹的方法,确保Dropbox文件夹中的数据安全的一种好方法是创建本地备份.在Linux上,有很多不同的方法可以创建备份,因此我们将介绍简单实用的方法 ...

  6. 从Windows文件夹到Linux分区

    1. 前提 1.1 本文不是针对零基础的用户,因此你必须具备这些技能: 知道什么是Windows系统 简单使用Windows系统 想要了解或安装Linux 1.2 本文不会对任何行为作担保,包括但不仅 ...

  7. Eclipse启动失败,提示查看.metadata文件夹下的.log文件

    Eclipse启动失败,提示查看.metadata文件夹下的.log文件 附上一些网上通用解决方法,方便以后查找: 尝试方法一:workspace目录下的.metadata目录整个删除.结果:未成功. ...

  8. linux 文件夹 775,linux - 如何为文件夹及其所有子文件夹和文件设置chmod?

    linux - 如何为文件夹及其所有子文件夹和文件设置chmod? 有没有办法为755设置htdocs及其所有内容,包括子文件夹和文件? 此外,在将来,如果我在htdocs内创建一个新文件夹或文件,它 ...

  9. 不要轻易放弃丢失的U盘文件夹数据,这里有按文件夹恢复数据的技巧

    U盘,全名叫USB闪存盘,是一种便携式的存储设备,是一种可以插入到电脑等电子设备上进行数据传输和存储的硬件设备.U盘的使用方便.速度高.存储容量大.稳定性高,因此被广泛用于数据备份.文档传输.音频视频 ...

  10. LOST.DIR文件夹中意外丢失文件的恢复方法

    LOST.DIR文件夹中意外丢失文件的恢复方法 LOST.DIR文件夹中意外丢失文件的恢复方法 http://moto.it168.com/thread-750593-1-1.html 玩了一段时间A ...

最新文章

  1. 面试让你手写SQL的时候,你慌了没?
  2. python安装不了bs4_怎么在python安装bs4
  3. vs2008添加excel类编译错误解决方法
  4. C语言学生成绩简单,C语言实现简单学生成绩管理系统.pdf
  5. hdu1025 Constructing Roads In JGShining#39;s Kingdom (nlogn的LIS)
  6. 【CyberSecurityLearning 51】渗透测试方法论+渗透测试流程
  7. windows XP上实现python2.7.5和python3.4.3共存
  8. JVM解释器和编译器
  9. Django Tips
  10. python生成4位验证码random_python 生成验证码很简单:random和srting的方法
  11. Python随笔(二)GIL
  12. 《Algorithms》Comparable 实现选择排序
  13. 从软件工程的角度比较Swift、Go和Julia,我有了这些发现
  14. phprpc的简单使用
  15. 从本机复制文件到VM虚拟机出现卡死
  16. MAC 电脑安装jdk
  17. Python3制作网易云音乐下载器!付费的你猜能下载吗!
  18. STM8L串口中断进不去
  19. [ 常用工具篇 ] Esxi 安装详解
  20. Linux查看当前时间

热门文章

  1. 利用 ILSpy 查看 C# 代码编译及运行真相
  2. 高等代数——大学高等代数课程创新教材(丘维声)——3.7笔记+习题
  3. Java自学视频整理
  4. android 组态软件,Livzenwex安卓版组态软件
  5. JMeter 录制脚本
  6. Sequelize 大于_间接效应值大于1是正常的吗?Q群答疑20200405
  7. (十六)51单片机——红外遥控
  8. 用最简单的方法生成代码雨,效果相当的哇塞。
  9. steam一键授权工具_超实用小工具!一键将PC其它平台的游戏导入Steam
  10. [python][原创]win10 anaconda3报错cannot import name ‘open_code‘ from ‘io