常用的Linux删除文件恢复工具的使用方法

然后使用相关工具进行恢复。本文以 Ubuntu 12.04 平台为例介介绍四个(foremost、extundelete、testdisk 和 phtorec)常用的 Linux 删除文件恢复工具的使用方法。

Linux 文件恢复的原理

inode 和 block

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

# mount /dev/sdb2 /tmp# ls -id /tmp2 /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

首先安装软件包

#apt-get install foremost

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

恢复单个类型文件

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

#rm -f /dev/sdb1/photo1.png#foremost -t png -i /dev/sdb1

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

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

恢复多个类型文件

#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

首先安装软件包

#apt-get install extundelete

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

模拟数据误删除环境

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

# 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 statusDirectory block 8657:. 2.. 2lost+found 11 Deleteddel1.txt 12 Deleted

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

开始恢复文件

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

# 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/ )工具到另外的存储空间上作为最原始的备份,以便数据恢复专家现场诊断恢复。

时间: 2024-10-01 19:33:34

常用的Linux删除文件恢复工具的使用方法的相关文章

Linux删除文件及大量文件删除方法

删除文件夹: rm -rf [FolderDir] 复制文件夹: cp -rf [SrcDir] [DstDir] Linux删除文件,文件夹主要用的命令是 rm ,下面将对 linux rm 命令做一个简单的介绍. 语法: rm [选项] DirName 该命令中的[选项]常用的有以下几种:www.111cn.net   -i 删除前逐一询问确认 -f 即使被删除的文件的属性是只读,也直接删除,无需逐一确认,默认是需要逐一确认的. -r 将目录及以下所有的文件都逐一删除 示例: rm -i *

linux删除文件未释放空间问题处理

linux删除文件未释放空间问题处理 或者 /根分区满了 (我的根分区是/dev/sda1,/dev/sda1满了) http://blog.csdn.net/donghustone/article/details/7085240  http://65572.vhost59.cloudvhost.net/?p=66 linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进

win8.1系统找回删除文件确认提示的方法

  win8.1系统找回删除文件确认提示的方法 1.打开"计算机". 2.在计算机中任意选择一个文件. 3.点击左上角的"主页". 4.我们可以看到删除选项了,点击它.在"显示回收确认"前打钩. 5.完成以上步骤后,我们删除文件时就有确认提示了.

解决Windows下删除文件没有权限的方法

就在Vista 和 windows 7 下,解决删除文件没有权限的方法 ①右键点击要删除的文件夹或文件--属性,再点安全--高级--所有者. ②点编辑--继续--其他用户或组,在输入选择的对象名称里面输入你的用户名 (如果你不知道自己现在登录的用户名,可点高级--立即查找,选择你的用户名,确定). ③然后选择替换子容器和对象的所有者,不选择这个的话,我们就只有这个文件夹的所有权,没有他的子文件夹和里面的文件的所有权(如果只是删除单个文件可省),然后应用--确定.这样我们就拥有了这个文件夹的所有权

PHP实现逐行删除文件右侧空格的方法[原创]_php技巧

本文实例讲述了PHP实现逐行删除文件右侧空格的方法.分享给大家供大家参考,具体如下: 在编辑整理代码的过程中发现网上的一些代码经常会有不少的右侧空格,偶尔会影响到代码的排版与阅读,所以写了一段简单的php代码来逐行删除文件右侧的空格,并保存到新的文件中. 带有右侧空格的demo.txt文件(该文件是PHP逐行读取功能代码)如下: $file = fopen("welcome.txt", "r") or exit("Unable to open file!&

linux删除文件后没有释放空间解决办法

今天介绍的是一个很实用的工具:lsof.能够查找到正在占用中的进程. centos安装命令: yum -y install lsof 实例可以看看这位仁兄的博客即可.本博客主已经证实真实可靠! 发现当前磁盘空间使用情况:   [root@ticketb ~]# df -h Filesystem            Size  Used Avail Use% Mounted on /dev/sda1             981M  203M  729M  22% / none        

Linux删除文件夹命令

  linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可. 直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字 -r 就是向下递归,不管有多少级目录,一并删除 -f 就是直接强行删除,不作任何提示的意思 方法: 1.删除文件夹实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 2.删除文件使用实例: rm -f /v

linux 删除文件和目录与恢复详解

前面你已经学习了使用 touch 命令来创建文件,以及使用 mkdir 命令来创建目录 tigger. 现在,你需要学习如何删除文件和目录. 使用 rm 命令来删除文件和目录是一个直截了当的过程.详情请参阅 rm 的说明书页.删除文件和目录的选项包括: » -i - 互动.提示你确认删除.这个选项可以帮助你避免误删文件. » -f - 强制.代替互动模式,不提示地删除文件.除非你知道自己在干什么,使用这个选项通常不是明智之举. » -v - 详细.显示文件的删除进度. » -r - 递归.将会删

3 个在 Linux 中永久并安全删除文件和目录的方法

在大多数情况下,我们习惯于使用 Delete 键.垃圾箱或 rm 命令从我们的计算机中删除文件,但这不是永久安全地从硬盘中(或任何存储介质)删除文件的方法. 该文件只是对用户隐藏,它驻留在硬盘上的某个地方.它有可能被数据窃贼.执法取证或其它方式来恢复. 假设文件包含密级或机密内容,例如安全系统的用户名和密码,具有必要知识和技能的攻击者可以轻松地恢复删除文件的副本并访问这些用户凭证(你可以猜测到这种情况的后果). 在本文中,我们将解释一些命令行工具,用于永久并安全地删除 Linux 中的文件. 1