Linux上最优秀的数据恢复工具

本文由 极客范 - 陈舸 翻译自 Danny Stieben。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

不管是不是由于自己的失误,总有些时候我们存储的数据会出点问题。硬盘、固态硬盘以及移动媒介都有可能因为各种不同的原因而“丢失”掉文件。此外,有时候你可能想删除某个文件——不管是有意的还是无意的——稍后你突然意识到自己正好需要那个文件。与其因为文件丢失而抓狂,不如先试试文件恢复工具,看能不能挽回自己的损失。本文着重介绍Linux上的几个数据恢复工具。

hurt_harddrive

 

数据恢复的原理是什么?

数据恢复工具都会基于一个基本的事实,那就是尽管操作系统可能认为文件已经是“删除”的了,但数据可能仍然存在于你的存储设备上。比如,现代的文件系统都可以判断空间是“空闲”的还是“已占用”的。从技术角度来说,尽管数据仍然存在,但文件系统仍可以声明这个空间是“空闲”的,它只是简单的让“空余”空间最终被新的数据所覆盖。

即使文件系统已经声称这些文件已不存在了,但数据恢复工具能对存储设备进行扫描,以查看是否有任何文件仍然在物理上存在于设备之上。Linux下这类工具有不少,这里是我所大力推荐的几种。

Safecopy

linux_data_recovery_safecopy

Safecopy是一个相当简单的数据恢复工具,它只是简单地将数据拷贝到一个新的位置上。它不会恢复单独的文件,但是可以将数据从故障的存储设备中拷贝出来。

这个工具和普通的copy命令之间的区别在于Safecopy在出现文件损毁的情况下并不会退出,无论损毁原因是由于写操作失败或者是扇区中有坏道。Safecopy还带有许多额外的选项能自定义工具具体的行为,包括在故障的存储媒介上创建文件系统的能力、尽可能或尽快地恢复数据,从多个不同的源来集合数据而不只是仅仅从一个源,以及访问存储媒介的RAW区域(未分区)。

这个工具可以通过在你的Linux发行版的软件源中搜索Safecopy来安装。Ubuntu用户只需要输入apt-get install safecopy就能自动安装了。一旦安装完成,如果你要从驱动器a的X分区恢复数据并将它们写到U盘里,那么可以用下面这条命令完成:

sudo safecopy /dev/sdaX /media/PENDRIVE_PATH/recovery_image

TestDisk

linux_data_recovery_testdisk

和Safecopy不同,TestDisk是另一种类型的数据恢复工具。它不能从故障的存储设备上拷贝数据,相反,它可以解决一些因为分区的原因而造成数据无法访问的问题。该工具可以帮助你恢复丢失的分区,让磁盘重新变得可以启动,整理分区表,恢复主引导记录,恢复引导扇区以及文件系统表,可以从NTFS、FAT、exFAT和ext2类型的文件系统中恢复被删除的文件,还能从已经删除了的NTFS、FAT、exFAT和ext2/3/4文件系统中拷贝文件。

完成上述这些任务的命令将有很大不同,所以最好在开始前先看看工具的文档手册或者仔细查看程序的用户接口。总的来说,TestDisk有着很多很棒的功能,肯定能够帮助到很多人将他们的数据安全的找回来。可以在软件源中搜索testdisk来安装。Ubuntu用户只需要输入apt-get install testdisk就可以了。

PhotoRec

linux_data_recovery_photorec

最后但同样重要的是如果你主要是想恢复视频、文档和归档类文件,你应该试试PhotoRec。PhotoRec的优点在于它完全忽略了文件系统,只去搜寻底层的数据。这表示如果设备损坏或者被重新格式化了PhotoRec仍然能工作。

为了防止在使用PhotoRec时所产生的任何问题,该工具在恢复数据时采用只读方式——这样它就不会意外地覆盖掉你希望得到恢复的数据。使用PhotoRec时请注意,一旦你需要恢复某个文件,请立刻停止任何的写磁盘操作。否则就会存在底层的数据被新写入的数据覆盖的可能,那样就没法再恢复了。

再次说明一下,使用这个工具时有很多的选项可供使用,包括可选择你希望恢复的文件扩展名,因此为了能正确使用这个工具请先查看工具的文档说明。要安装这个工具,你可以在软件源中搜索testdisk或photorec。

有一些Linux发行版如Ubuntu会将Testdisk和PhotoRec这两个程序集合为一个单独的包,因为它们的开发者是同一个人。因此,Ubuntu用户也可以通过sudo apt-get install testdisk来安装PhotoRec。

结论

本文介绍的这3个数据恢复工具应该能够涵盖大多数数据恢复的需求,从恢复误删除的文件到从损坏的媒介中将数据拷贝出来都能胜任。在使用前请确保先仔细查阅工具的手册文档,保证它们所执行的操作能完全符合你的需要。Linux上的这类系统软件大多数都没有图形用户界面,它们只能通过终端来运行。值得庆幸的是,TestDisk和PhotoRec都有基于终端的界面可使用,这比纯粹靠命令驱动的程序相比还是好了很多。

那么,你最喜爱的数据恢复工具是什么呢?有什么独门秘籍或解决方案呢?请在评论栏中为大家分享一下吧。

 

 



原文链接: Danny Stieben 翻译: 极客范 - 陈舸

译文链接: http://www.geekfan.net/1300/

[ 转载请保留原文出处、译者和译文链接。]

陈舸
通信人,从事网络设备开发。技术方向:Linux/VxWorks、网络协议、C/C++,尤爱Python。热爱互联网,移动应用,开源软件。译有《算法精解:C语言描述》,《Linux/UNIX系统编程手册》(下册)新浪微博:@bigsh1p

3 评论

  1. mmodem  /  2013 年 6 月 5 日, 下午 5:20 回复

    testdisk的确非常好用
    我用它好几次找回分区表了
    几乎就没失败过
    直接Undelete(或List File)也是强大无需解释
    我在手机上误删SD卡上的文件都用testdisk成功恢复过几次,连卸载SD卡都不需要,恢复时直接拷到别处就行了。
    另外,其实分区表并不复杂,只要找到分区对应的偏移量(用16进制工具),甚至直接losetup就可以挂载丢失的分区
    另外我记得testdisk是可以做分区镜像的。

    Thumb up 2 Thumb down 0

    • 陈舸  /  2013 年 6 月 5 日, 下午 5:24 回复

      有过实际使用经验的人都说靠谱~

      Thumb up 2 Thumb down 0

  2. Holy俊杰  /  2013 年 6 月 30 日, 下午 4:11 回复

    SafeCopy的功能很像 dd_rescue ,从一个换掉的磁盘copy数据到一个新的位置。我前段时间刚用 dd_rescue 恢复了5年前坏掉的磁盘中数据。

    Thumb up 1 Thumb down 0

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">