安装 Scalpel(文件系统恢复工具)来恢复 Linux 中已删除的文件/文件夹
很多时候,我们会不小心或错误地按下文件上的“ shift + delete ”键。出于人性,我们习惯使用“ shift + Del ”,而不是只使用“ Delete ”选项。几天前我就遇到过这种情况。我正在做一个项目,并将我的工作文件保存在一个目录中。该目录中有许多不需要的文件,需要永久删除。所以我开始一个接一个地删除它们。在删除这些文件时,我不小心按下了一个重要文件的“ shift delete ”。该文件从我的目录中永久删除了。我想知道如何恢复已删除的文件,但不知道该怎么做。我几乎花了很多时间来恢复文件,但没有成功。
我掌握了一些技术知识,知道文件系统和HDD 的工作原理。当您意外删除文件时,文件的内容不会从计算机中删除。它只是从数据库文件夹中删除,您无法在目录中看到该文件,但它仍然保留在硬盘的某个地方。基本上,系统有一个列表指针,指向存储设备上仍包含数据的块。除非您用新文件覆盖,否则数据不会从块存储设备中删除。从这个角度来看,我认为我删除的文件可能仍然保留在硬盘上未编入索引的区域的某个地方。但是,建议您在意识到删除了任何重要文件后立即卸载设备。卸载可以帮助您防止被阻止的文件被新文件覆盖。
在这种情况下,我不想覆盖数据,因此我更愿意在不安装硬盘的情况下在硬盘中搜索。
通常在Windows中,我们会使用大量第三方工具来恢复丢失的数据,但在Linux中只有少数。但是,我使用Ubuntu作为操作系统,很难找到恢复丢失文件的工具。在研究过程中,我了解到“ Scalpel ”,这是一种可以遍历整个硬盘并恢复丢失文件的工具。我安装了Scalpel工具并成功恢复了丢失的文件。我必须说,这真是一个了不起的工具。
这也可能发生在你身上。所以我想和你分享我的经验。在本文中,我将向你展示如何借助 scalpel 工具恢复已删除的文件。让我们开始吧。
什么是手术刀工具?
Scalpel是一款适用于Linux和Mac操作系统的开源文件系统恢复工具。该工具访问块数据库存储并识别其中已删除的文件并立即恢复它们。除了文件恢复之外,它还可用于数字取证调查。
如何在 Debian/Ubuntu 和 Linux Mint 中安装 Scalpel
要安装 Scalpel,请在桌面上按“ CTrl+Alt+T ”打开终端,然后运行以下命令。
$ sudo apt-get install scalpel
示例输出
Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: scalpel 0 upgraded, 1 newly installed, 0 to remove and 390 not upgraded. Need to get 0 B/33.9 kB of archives. After this operation, 118 kB of additional disk space will be used. Selecting previously unselected package scalpel. (Reading database ... 151082 files and directories currently installed.) Unpacking scalpel (from .../scalpel_1.60-1build1_i386.deb) ... Processing triggers for man-db ... Setting up scalpel (1.60-1build1) ... example@example-Latitude-D630:~$
在 RHEL/CentOS 和 Fedora 中安装 Scalpel
要安装 scalpel 恢复工具,您需要先启用 epel 存储库。启用后,您可以按照所示执行“ yum ”来安装它。
# yum install scalpel
示例输出
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.01link.hk * epel: mirror.nus.edu.sg * epel-source: mirror.nus.edu.sg Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package scalpel.i686 0:2.0-1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================================================================================================== Package Arch Version Repository Size ========================================================================================================================================================== Installing: scalpel i686 2.0-1.el6 epel 50 k Transaction Summary ========================================================================================================================================================== Install 1 Package(s) Total download size: 50 k Installed size: 108 k Is this ok [y/N]: y Downloading Packages: scalpel-2.0-1.el6.i686.rpm | 50 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : scalpel-2.0-1.el6.i686 1/1 Verifying : scalpel-2.0-1.el6.i686 1/1 Installed: scalpel.i686 0:2.0-1.el6 Complete!
安装 scalpel 后,您需要进行文本编辑。默认情况下,scalpel 实用程序在“ /etc ”目录中有自己的配置文件,完整路径为“ /etc/scalpel/scalpel.conf ”或“ /etc/scalpel.conf ”。您会注意到所有内容都被注释掉了(#)。因此,在运行 scalpel 之前,您需要取消注释需要恢复的文件格式。但是,取消注释整个文件非常耗时,并且会产生大量错误结果。
比如说,我只想恢复“ .jpg ”文件,因此只需取消注释手术刀配置文件中的“ .jpg ”文件部分。
# GIF and JPG files (very common) gif y 5000000 \x47\x49\x46\x38\x37\x61 \x00\x3b gif y 5000000 \x47\x49\x46\x38\x39\x61 \x00\x3b jpg y 200000000 \xff\xd8\xff\xe0\x00\x10 \xff\xd9
转到终端并输入以下语法。' /dev/sda1 ' 是文件已从中删除的设备位置。
$ sudo scalpel /dev/sda1-o output
“ -o ”开关表示输出目录,您要在其中恢复已删除的文件。在运行任何命令之前,请确保此目录为空,否则会出错。上述命令的输出为。
Scalpel version 1.60 Written by Golden G. Richard III, based on Foremost 0.69. Opening target "/dev/sda1" Image file pass 1/2. /dev/sda1: 6.1% |***** | 6.6 GB 39:16 ETA
如您所见,手术刀现在正在执行其过程,恢复已删除的文件需要一些时间,具体取决于您尝试扫描的磁盘空间和机器的速度。
我建议大家养成只使用删除而不是“ Shift + Delete ”的习惯。因为正如所说,预防总是比治疗更好。