在 Linux 系统下使用 PhotoRec & TestDisk 工具来恢复文件
当你在系统中有意或无意地使用 shift + delete
组合键、删除选项,或是清空回收站的方式来删除一个文件时,该文件的内容并没有从硬盘(或是其它存储设备)上直接销毁。
它仅仅是从系统的目录结构中被移除,然后你在删除文件的目录下就看不到该文件了,但是这个文件仍然存在你磁盘中的某个位置上。
如果你有一个合适的工具和相关的专业知识,你就可以从电脑中恢复已丢失的文件。然而,随着你存储的文件越来越多,删除的文件将会被覆盖,你可能只能恢复最近删除的文件了。
在这篇文章中,我们将阐明如何在 Linux 系统中使用 TestDisk 来恢复硬盘上已删除或丢失的文件,它是非常优秀的修复工具,随一款免费的叫做 PhotoRec 的工具发布。
PhoteRec 工具用于从存储介质比如硬盘,数码相机和 cdrom 设备中恢复丢失的文件。(LCTT 译注:PhotoRec 的意思是 Photo Recovery,不是 Photo Recorder。)
在 Linux 系统中安装 TestDisk(PhotoRec)
在系统中执行以下相关的命令来安装 TestDisk:
------- On Debian/Ubuntu/Linux Mint -------
$ sudo apt-get install testdisk
------- On CentOS/RHEL/Fedora -------
$ sudo yum install testdisk
------- On Fedora 22+ -------
$ sudo dnf install testdisk
------- On Arch Linux -------
$ pacman -S testdisk
------- On Gentoo -------
$ emerge testdisk
如果你的 Linux 系统仓库中没有这个安装包,可以从 这里 下载然后在 Live CD 中运行即可。
这个安装包也可以在应急修复 CD 工具中找到,比如 Gparted LiveCD 、 Parted Magic 、 Ubuntu Boot CD 、 Ubuntu-Rescue-Remix 及其它工具等。
安装完成之后,使用 root 账号权限打开文本窗口,启动 PhotoRec,并指定已删除文件的分区:
$ sudo photorec /dev/sda3
你将会看到下面的交互界面:
Linux 系统 PhotoRec 数据恢复工具
使用左右箭头选择菜单选项,按回车键确认。要继续恢复操作,选择 [Proceed]
并单击 Enter。
你将看到下面的界面:
选择分区进行文件恢复
选择 [Options]
来查看可用的恢复选项,如下图所示:
Linux 系统文件恢复选项
按 Q
返回,在下图界面,你可以指定你想要查询并恢复的文件扩展名。因此,选择 [File Opt]
,按回车键确认。
按 s
来选择或取消选择所有的文件扩展名,如果你已经取消选择了所有的文件扩展名,只需要使用向右箭头选择你想要恢复的文件类型即可(或者按向左箭头取消选择)。
例如,我想恢复所有系统中丢失的 .mov
类型的文件:
指定恢复文件类型
按 b
键保存设置,之后你应该看到如下图所示信息。单击回车键返回(或者按 Q
键),再按 Q
键返回到主界面。
保存文件恢复设置
现在选择 [Search]
开始文件恢复。在下图中,选择存储文件分区的文件系统类型,然后按回车键。
选择文件系统类型来恢复删除的文件
下一步,如下图所示,选择是仅对空闲空间还是整个分区进行分析。注意选择整个分区将会让操作过程变得更长更慢。选择合适的选项后,按回车键继续。
选择文件系统进行分析
选择一个目录用于存储将要恢复的文件,选择完成之后,按 C
键继续。选择不同分区的目录,以避免当更多的文件存储在这个分区时覆盖掉已删除的文件。
按向左箭头返回到根分区下。
选择要保存恢复文件的目录
下图显示正在被恢复的指定类型的已删除文件。你可以按回车键来停止操作。
注意:在恢复的过程中,你的系统会变得很慢,很可能会卡住一段时间,请耐心等待直至恢复完成。
在 Linux 系统中恢复已删除的文件
最后, Photorec 工具将会显示出已恢复文件的数量及保存的路径。
Linux 文件恢复情况汇总
默认情况下,已恢复的文件将会以 root 账号权限保存,因此,你需要以提升权限的方式打开文件管理器来访问这些文件。
使用如下命令(指定你的文件管理器):
$ gksudo nemo
或
$ gksudo nautilus
原文发布时间为:2017-01-16
本文来自云栖社区合作伙伴“Linux中国”
相关文章
- RPC 用着好好的?为什么还需要使用 MQ?
- 一日一技:Pandas 中,如何分组再取 N项?
- 命令行工具开发:如何快速实现命令行提示?
- Docker真的万能吗?看这一篇就够了
- 2700万程序员要失业?机器编程要让全球78亿人都能写代码
- 从高中碾转相除法、更相减损术算法谈起
- Golang GinWeb框架9-编译模板/自定义结构体绑定/http2/操作Cookie
- 手写线程池,对照学习ThreadPoolExecutor线程池实现原理!
- 为什么 HashMap 会发生数据覆盖问题
- 架构师的成长之路,第一步该怎么迈?我给大家准备好了
- 代码整洁之道的 7 个方法
- 谷歌向外部开发者开放新的操作系统“Fuchsia”
- 扒下GET和POST的外衣,坦诚相见!
- SpringCloud 整合Seata 解决分布式事务(搭建+源码)
- 亲妹都能学会的 static 关键字
- 说完观察者和发布订阅模式的区别,面试官不留我吃饭了
- 分享一些开源项目,可以接私活了
- 想成为个好的软件开发者?那这5点代码重构的东西你必须得知道
- Golang GinWeb框架8-重定向/自定义中间件/认证/HTTPS支持/优雅重启等
- 关于时间复杂度,你不知道的都在这里!