inode 和 block

首先简单介绍一下 Linux 文件系统的最基本单元:inode。inode 译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode,另一部份是 block,block 是用来存储数据用的。而 inode 呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode 为每个文件进行信息索引,所以就有了 inode 的数值。linux 操作系统下可以使用 ls –id 命令来查看文件或者目录的 inode 值,一般”root”目录的 inode 值为 2,一个分区挂载到一个目录下时,这个”root”目录的 inode 值为 2

1

2

3

# mount /dev/sdb2 /tmp

# ls -id /tmp

2 /tmp

文件恢复的原理

本文要介绍的命令是通过文件系统的 inode 值(一般是 2 )来获取文件系统信息。在 ext3 和 ext4 文件系统中,每个文件都是通过 inode 来描述其数据存放的具体位置,当文件被删除以后,inode 的数据指针部分被清零,文件目录区没有太多变化。文件的读写都是通过 inode 来实现,当 inode 数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来。当 ext3 和 ext4 文件系统中的元数据 metadata 发生变化时,相应的元数据 metadata 在日志文件会有一份拷贝。比如一个文件被删除了,它的 inode 信息会在日志文件中先保存一份,然后把要删除文件 inode 相关信息清零。这个日志文件是循环使用的,当操作过多时,删除的文件的 inode 日志记录会被新的数据替换,这就彻底丧失了根据 inode 找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会。

使用命令行工具恢复文件

foremost 和 extundelete 简介

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 只能支持恢复特定格式的文件。

使用 foremost

首先安装软件包

1

#apt-get install foremost

其它 Linux 发行版用户可以在 http://foremost.sourceforge.net/ 下载源代码编译安装。下面看看使用方法。

恢复单个类型文件

笔者删除一个 USB(/dev/sdba1)存储器中一个 png 文件然后使用 formost 恢复。

1

2

#rm -f /dev/sdb1/photo1.png

#foremost -t png -i /dev/sdb1

恢复完成后会在当前目录建立一个 output 目录,在 output 目录下会建立 png 子目录下会包括所有可以恢复的 png 格式的文件。

需要说明的是 png 子目录下会包括的 png 格式的文件名称已经改变,另外 output 目录下的 audit.txt 文件是恢复文件列表。

恢复多个类型文件

1

#foremost -v -T -t doc,pdf,jpg,gif -i /dev/sda6 -o /media/disk/Recover

恢复完成后会在当前目录建立一个 output 目录,在 output 目录下会建立四个子目录(/doc,/pdf,/jpg,/gif),分别包括四种类型文件。另外 output 目录下的 audit.txt 文件是恢复文件列表。

使用 extundelete

首先安装软件包

1

#apt-get install extundelete

其它 Linux 发行版用户可以在http://extundelete.sourceforce.net/下载源代码编译安装。下载安装 extundelete 之前要安装两个软件包 e2fsprogs 和 e2fslibs。下面看看使用方法

模拟数据误删除环境

这里我们使用一个分区/dev/sdd1 挂在在/backupdate 上,建立一个测试目录/delete 并建立一文件:del1.txt 。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

# mkdir –p /backupdate/deldate

# mkfs.ext4 /dev/sdd1

# mount /dev/sdd1 /backupdate

#cd /backupdate/deldate

# touch del1.txt

# echo " test 1" > del1.txt

获取文件校验码

# md5sum del1.txt

66fb6627dbaa37721048e4549db3224d del1.txt

删除文件

# rm -fr /backupdate/*

卸载文件系统或者挂载为只读

# umount /backupdate

查询恢复数据信息,注意这里的--inode 2 这里会扫描分区 :

# extundelete /dev/sdd1 --inode 2

.....

File name | Inode number | Deleted status

Directory block 8657:

. 2

.. 2

lost+found 11 Deleted

del1.txt 12 Deleted

上面标记为 Deleted 是已经删除的文件或目录

开始恢复文件

默认恢复到当前目录下的 RECOVERED_FILES 目录中去。

1

2

3

4

5

6

7

8

# extundelete /dev/sdd1 --restore-file del1.txt

如果恢复一个目录

# extundelete /dev/sdd1 --restore-directory /backupdate/deldate

恢复所有文件

# extundelete /dev/sdd1 --restore-all

获取恢复文件校验码,对比检测是否恢复成功

# md5sum RECOVERED_FILES/ del1.txt

66fb6627dbaa37721048e4549db3224d RECOVERED_FILES/del1.txt

查看校验码与之前的是否完全一致。

应用总结:笔者在现实使用过程中发现 extundelete 还是有很大的不完整性,基于整个磁盘的恢复功能较为强大,基于目录和文件的恢复还不够强大。在 Linux 下误删除了文件,当发现数据丢失以后,不要进行任何操作,保留现场。要想办法把数据丢失的文件系统经过 dd 命令或者 AIR(Automated Image Restore,http://cdnetworks-kr-2.dl.sourceforge.net/ )工具到另外的存储空间上作为最原始的备份,以便数据恢复专家现场诊断恢复。

使用 scalpel

以上介绍的工具主要使用在 ext3 和 ext4 的文件系统,如果用户使用的那些没有日志机制的旧有文件系统,可以使用 scalpel 工具。scalpel 是一种快速文件恢复工具,它通过读取文件系统的数据库来恢复文件。它是独立于文件系统的。

用户可以在http://www.digitalforensicssolutions.com/Scalpel/ 下载源代码编译安装。下面看看使用方法:

使用 scalpel 工具之前,首先要修改配置文件: /etc/scalpel/scalpel.conf。

例如用户要恢复所有删除 pdf 文件,那么要在/etc/scalpel/scalpel.conf 把包括 pdf 文件格式的两行之前的# 去掉。

1

2

3

4

[...]

pdf y 5000000 %PDF %EOFx0d REVERSE

pdf y 5000000 %PDF %EOFx0a REVERSE

[...]

然后保存文件。

下面看看使用方法

1

# scalpel /dev/sdb1 -o /RECOVERY/

其中/dev/sdb1 是目标驱动器,/RECOVERY/ 是恢复文件存储目录。目录下的 audit.txt 文件是恢复文件列表。

使用字符终端工具 testdisk 和 phtorec

testdisk 简介

testdisk 是分区表恢复、raid 恢复、分区恢复的开源免费工具(testdisk 支持如下文件系统: FAT12/FAT16/FAT32/NTFS/ext2/ext3/ext4)。testdisk 支持的功能: 修复分区表, 恢复已删除分区,用 FAT32 备份表恢复启动扇区,重建 FAT12/FAT16/FAT32 启动扇区,修复 FAT 表,重建 NTFS 启动扇区,用备份表恢复 NTFS 启动扇区,用 mft 镜像表(mft mirror)修复 mft 表,查找 ext2/ext3 备份的 superblock,从 FAT,NTFS 及 ext2 文件系统恢复删除文件,从已删除的 FAT,NTFS 及 ext2/ext3 分区复制文件。

使用方法

首先安装

1

#apt-get install testdisk

其它 Linux 发行版用户可以在http://www.cgsecurity.org/wiki/TestDisk_Download 下载源代码编译安装。下载安装 testdisk 之前要安装几个软件包 libjpeg8 ,libncursesw5, libuuid1, zlib1g 。下面看看使用方法

启动 testdisk

1

#testdisk

testdisk 启动后的工作界面首先是选择恢复操作中的 log 文件(testdisk.log)的纪录方式见图 1。

图 1.选择恢复操作中的 log 文件的纪录方式

[Create]新建

[Append]追加

[No Log]不纪录

选择了 log 文件的记录方式后、系统显示处于连接状态的磁盘设备见图 2。

图 2.处于连接状态的磁盘设备

在列出的磁盘设备中,选择要恢复的分区,然后选择磁盘分区的种类。若是 ext4 文件系统的话,请选择 [None ] Non partitioned media 见图 3

图 3.选择 [None ] Non partitioned media

说明:一般选择[Intel] Intel/PC partition(如果是 GPT 分区,请选择 EFI GPT),对于 ext4 文件系统选择 [Intel] Intel/PC partition 也能正确识别,只是分析硬盘時比较慢。

下面的画面中选择[Analyse],对分区进行分析见图 4。

图 4.对分区进行分析

下面显示了当前分区的状态。这是软件分析的当前分区表的分区结果,我们选择“Deep Search”进行一次深入检测见图 5。

图 5.选择“Deep Search”进行一次深入检测

下面是检测完成界面见图 6

图 6.检测完成界面

在这个画面时,按 P 键就可以列出硬盘上的文件见图 7

图 7.红色的文件名称就是已经被删除的文件

红色的文件名称就是已经被删除的文件,选择好你要恢复的文件后,按 c 键之后,它就会问你要复制到哪个目录,这时请选择你要 复制的目地地(destination)即可。

photorec 简介

photorec 是一款用于恢复硬盘、光盘中丢失的视频、文档、压缩包等文件,或从数码相机存储卡中恢复丢失图片的数据恢复软件(因此,该软件命名为 photo recovery 这个名字)。 photorec 忽略文件系统,能直接从介质底层恢复数据,因此,在介质的文件系统严重破坏或被重新格式化后,它也能进行数据恢复。出于安全考虑, photorec 以只读方式来访问您要恢复数据所在的磁盘或存储卡介质。提示: 一旦发现丢失或意外删除了某个图片、文件, 请不要继续往该存储设备或磁盘保存新文件;否则您可能会覆盖原来的数据。 这意味着您在使用 photorec 时,您千万不要将恢复的文件写入到原数据所存储的同一分区。

使用 photorec 恢复文件

photorec 是 testdisk 的伴侣程序,安装 testdisk 后 photorec 就可以使用了。

启动 photorec

1

# photorec

图 8 中显示了已连接磁盘设备,准备恢复的文件在那个设备上就选择它,然后在选择 Proceed 按钮继续下一步。

图 8.已连接磁盘设备

接下来,选择恢复的磁盘分区格式。这里选择 ext4 见图 9。

图 9.选择恢复的磁盘分区格式

画面下方[File Opt]中有可供恢复的文件种类提供被选择见图 10。

图 10.可供恢复的文件种类

说明:如果只是 root 据某些文件签名要恢复部分文件类型,那么可以按 s 取消全部勾选,然后移动光标到要恢复的文件类型,可按空格来选择高亮选中的类型。

下面设定要分析的磁盘空间区域,可整个分区搜索,也可只搜索自由空间(相当于未分配簇)见图 11 。

图 11.设定要分析的磁盘空间区域

下面选择分区所使用的文件系统类型,然后设定导出的文件目录,一般输入 Y 并回车即可。图 12 是恢复完成界面。

图 12.恢复完成

恢复完了选择 Quit 退出 PhtoRec。被恢复的文件是 recup_dir.x 的若干数字子组合为文件名被保存在当前目录的/recup_dir 子目录下的。

功能对比

表 1 是 Linux 删除文件恢复工具

表 1.Linux 删除文件恢复工具

工具名称/功能对比工作界面功能简介foremost命令行formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具extundelete命令行Extundelete 是 ext3、ext4 文件系统的恢复工具scalpel命令行scalpel 是一种快速文件恢复工具,它通过读取文件系统的数据库来恢复文件。它是独立于文件系统的testdisk字符终端Testdisk 支持分区表恢复、raid 恢复、分区恢复phtorec字符终端photorec 用来恢复硬盘、光盘中丢失的视频、文档、压缩包等文件,或从数码相机存储卡中恢复丢失的图片

总结

可以使用 testdisk 进行文件恢复的场合,也就是硬盘上的分区(该分区有原有数据纪录)已经损坏的情形。但是如果损坏之后,重新再次做成了新分区的话,文件恢复的可能性比较小,很困难。photorec 不仅针对 硬盘、USB 设备、CD-ROM、SD 卡,而且还可以对其它存储设备进行应用。因此大多数常用的文件如果被误操作的话,均可利用其来进行恢复,只不过它的初衷是针对照片而制作的。

linux存储pdf伟岸_Linux 文件恢复的原理相关推荐

  1. Linux文件恢复的原理

    转载: https://www.ibm.com/developerworks/cn/linux/1312_caoyq_linuxrestore/index.html 文件恢复的原理 本文要介绍的命令是 ...

  2. linux文件句柄,【LINUX】使用lsof处理文件恢复、句柄以及空间释放问题

    曾经在生产上遇到过一个df 和 du出现的结果不一致的问题,为了排查到底是哪个进程占用了文件句柄,导致空间未释放,首先在linux上面,一切皆文件,这个问题可以使用lsof这个BT的命令来处理(这个哈 ...

  3. linux proc 目录清理_Linux文件及目录管理命令基础

    目录 前言 下面是常用命令的介绍,这些命令都是以后会用到的,熟练掌握便是最终的目标. 第一章 Linux文件及目录管理命令基础 1.1 pwd: 显示当前所在位置的信息 [功能说明] 显示当前所在目录 ...

  4. linux怎么创建牡蛎_Linux文件也有快捷方式?有的,你会用吗?

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解linux软链接与硬链接的原理以及使用的方 ...

  5. linux oracle删除恢复数据恢复,Linux下Oracle误删除数据文件恢复操作

    检查数据文件的位置如下: SQL> select name from v$datafile; NAME --------------------------------------------- ...

  6. 五款救急的linux文件恢复软件,五款救急的Linux文件恢复软件

    BKJIA快译]文件有备份,啥子也不愁!文件无备份,啥子也白搭.但是,面对突如其来的悲剧,文件恢复软件来帮忙时可以尽量最小化减小损失.下面Linux用户需知的5款文件恢复软件: #1,Ddrescue ...

  7. nas服务器上文件恢复,nas文件恢复

    nas文件恢复 内容精选 换一换 一个存储库只可以绑定一个备份策略.一个存储库只可以绑定一个复制策略.一个存储库最多可以绑定256个资源.最多只能创建32个备份策略和32个复制策略.只有"可 ...

  8. android删除文件恢复app,手机删除文件怎么恢复?手机恢复删除App

    手机删除文件怎么恢复?很多朋友都会遇到误删手机文件的情况,想要恢复手机误删的文件怎么办?其实,在安卓平台还是相应功能的App的.今天,就让小编来为大家介绍一款手机恢复删除文件的App--壁虎文件恢复A ...

  9. linux中rm删除的文件是否可以恢复,Linux下用rm删除的文件的恢复方法

    Linux下用rm删除的文件的恢复方法_Linux教程_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2008-08/14744.htm lin ...

最新文章

  1. The Android Gradle plugin supports only Kotlin Gradle plugin version 1.3.0 and higher.
  2. 基于Python的人脸自动戴口罩系统
  3. 商城分类表-二级,内容较全
  4. 【Redis】9.10.Redis持久化方式之RDBAOFAOF和RDB区别场景分析
  5. 稳定性保障6步走:高可用系统大促作战指南!
  6. mysql event 变量_DQL--select和MySQL的Event
  7. linux之我常用的20条命令( 之三)
  8. dede去除powered by dedecms
  9. 网上下载的php源码怎么运行,在中国站长站下载的asp源码,如何在自己电脑上运行?...
  10. docker镜像存储在哪里
  11. 关于es cpu安装黑苹果,并实现变频
  12. 《构建之法》第1.2.3章读后感以及《硅谷传奇》观后感
  13. 【离散数学笔记】逻辑运算之吸收律
  14. winnt.h的错误解决办法
  15. VC6.0调试功能使用介绍
  16. Python.Extracting Data from JSON
  17. Tpflow V6.0.6 正式版发布
  18. iTextSharp PDF .NET 设置图片大小为A4尺寸
  19. SpiderFoot(信息收集)
  20. SQL 计算累积销售额,百分比

热门文章

  1. 纪念一下我2020年的努力结果,腾讯云社区创作总结
  2. SAP Analytics Cloud里避免类型为个数的measure出现小数点
  3. ABAP Development Tool IDE里编写的CDS view源代码是如何传递到ABAP后台并解析的
  4. SAP UI5 datajs.js response handling
  5. SAP UI5 GM6 require sap.ui.core.Core
  6. how is navigation list item click event handled - actually no logic done
  7. where is application controller bound to application main view
  8. 关于nodejs的__dirname
  9. Account Hierarchy in SAP CRM and C4C
  10. SAP CRM和Cloud for Customer中的Event handler(事件处理器)