收集云服务器优惠信息
记录云服务器使用心得

Scalpel恢复工具:恢复Linux已删除文件/文件夹

在操作Linux系统的时候,可能经常会不小心或错误地按“ shift+delete”键删除了文件。就个人习惯而言,或许会有更喜欢使用“ shift+Del ”而不是“Delete”的习惯。

事实上,最近小编前就经历过这件事,我将自己的工作文件保存在一个目录中。该目录中有许多不需要的文件,需要永久删除。于是我想进行删除操作。在删除这些文件时,不小心按了“ shift+delete”删错了一个不需要删除的重要文件,该文件已从目录中永久删除。这个时候是多么希望能够恢复已删除的文件,但不知道该怎么操作。几乎尝试各种方法恢复文件但以失败告终。

接下来了解了一些技术知识后,知道了Linux文件系统和硬盘的工作原理。当你意外删除文件时,该文件的内容不会从计算机系统中删除。它紧紧从数据库文件夹中删除,无法在目录中看到该文件,但它仍然保留在硬盘驱动器中的某个位置。基本上,Linux系统有一个列表指针,指向存储设备上仍然有数据的块。除非并且直到你用新文件覆盖,否则不会从块存储设备中删除数据。从这个角度来看,我感觉自己删除的文件可能仍然保留在硬盘的未索引区域中。当然,这里建议大家在意识到已删除任何重要文件后立即Unmount设备。Unmount命令可以帮你防止已删除的文件被新文件覆盖。

在这种情况下,我不想覆盖该数据,因此我更喜欢在硬盘驱动器中搜索而不挂载它。

通常在Windows系统中,有大量的第三方工具来恢复丢失的数据,但在Linux中却很少。并且,小编使用Ubuntu作为操作系统,很难找到恢复丢失文件的工具。在我网上搜索的过程中,了解了“ Scalpel ”工具,这是一种可以遍历整个硬盘并恢复丢失文件的工具。我在Scalpel工具的帮助下安装并成功恢复了丢失的文件。

想到大家这可能遇到类似经历。所以想和大家分享一下我的经验。在本文中,简单想你展示如何借助Scalpel工具恢复已删除的文件。那么我们开始吧。

Scalpel恢复工具

什么是Scalpel工具?

Scalpel是一款适用于Linux和Mac操作系统的开源文件系统恢复工具,该工具访问块数据库存储并从中识别已删除的文件并立即恢复它们。除了文件恢复之外,它对于数字取证调查也很有用。

在Debian/Ubuntu和Linux Mint中安装Scalpel

要安装Scalpel,请打开shell终端并运行以下命令:

$ 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) ...

RHEL/CentOS和Fedora中安装Scalpel

要安装Scalpel工具,需要先启用epel存储库。启用之后,可以执行“ yum ”来安装它,命令如下:

# yum install scalpel
样本输出如下:
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink | 25 kB 00:00
* base: mirror.us-midwest-1.nexcess.net
* elrepo: ord.mirror.rackspace.com
* epel: mirror.xenyth.net
* extras: nyc.mirrors.clouvider.net
* remi-php80: cdn.centos.no
* remi-safe: cdn.centos.no
* updates: bay.uchicago.edu
base | 3.6 kB 00:00
copr:copr.fedorainfracloud.org:jdoss:wireguard | 3.3 kB 00:00
elrepo | 3.0 kB 00:00
epel | 4.7 kB 00:00
extras | 2.9 kB 00:00
remi-php80 | 3.0 kB 00:00
remi-safe | 3.0 kB 00:00
shells_fish_release_3 | 1.7 kB 00:00
updates | 2.9 kB 00:00
(1/6): elrepo/primary_db | 353 kB 00:00
(2/6): remi-php80/primary_db | 229 kB 00:00
(3/6): epel/x86_64/updateinfo | 1.0 MB 00:00
(4/6): remi-safe/primary_db | 2.4 MB 00:01
(5/6): updates/7/x86_64/primary_db | 22 MB 00:01
(6/6): epel/x86_64/primary_db | 7.0 MB 00:01
Resolving Dependencies
--> Running transaction check
---> Package scalpel.x86_64 0:2.0-7.el7 will be installed
--> Processing Dependency: libtre.so.5()(64bit) for package: scalpel-2.0-7.el7.x 86_64
--> Running transaction check
---> Package tre.x86_64 0:0.8.0-18.20140228gitc2f5d13.el7 will be installed
--> Processing Dependency: tre-common = 0.8.0-18.20140228gitc2f5d13.el7 for pack age: tre-0.8.0-18.20140228gitc2f5d13.el7.x86_64
--> Running transaction check
---> Package tre-common.noarch 0:0.8.0-18.20140228gitc2f5d13.el7 will be install ed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository
Size
================================================================================
Installing:
scalpel x86_64 2.0-7.el7 epel 49 k
Installing for dependencies:
tre x86_64 0.8.0-18.20140228gitc2f5d13.el7 epel 40 k
tre-common noarch 0.8.0-18.20140228gitc2f5d13.el7 epel 32 k

Transaction Summary
================================================================================
Install 1 Package (+2 Dependent packages)

Total download size: 121 k
Installed size: 247 k
Is this ok [y/d/N]: y
Downloading packages:
(1/3): tre-0.8.0-18.20140228gitc2f5d13.el7.x86_64.rpm | 40 kB 00:00
(2/3): scalpel-2.0-7.el7.x86_64.rpm | 49 kB 00:01
(3/3): tre-common-0.8.0-18.20140228gitc2f5d13.el7.noarch.r | 32 kB 00:00
--------------------------------------------------------------------------------
Total 64 kB/s | 121 kB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : tre-common-0.8.0-18.20140228gitc2f5d13.el7.noarch 1/3
Installing : tre-0.8.0-18.20140228gitc2f5d13.el7.x86_64 2/3
Installing : scalpel-2.0-7.el7.x86_64 3/3
Verifying : tre-0.8.0-18.20140228gitc2f5d13.el7.x86_64 1/3
Verifying : tre-common-0.8.0-18.20140228gitc2f5d13.el7.noarch 2/3
Verifying : scalpel-2.0-7.el7.x86_64 3/3

Installed:
scalpel.x86_64 0:2.0-7.el7

Dependency Installed:
tre.x86_64 0:0.8.0-18.20140228gitc2f5d13.el7
tre-common.noarch 0:0.8.0-18.20140228gitc2f5d13.el7

Complete!

安装Scalpel后,需要进行文本编辑。默认情况下,Scalpel实用程序在“ /etc ”目录中有自己的配置文件,完整路径为“ /etc/scalpel/scalpel.conf ”或“ /etc/scalpel.conf ”。你可以注意到所有内容都被注释掉了 ( # )。因此,在运行Scalpel之前,需要取消对将要恢复的文件格式的注释。然而,取消整个文件的注释非常耗时,并且会产生严重的错误结果。

举例来说,我只想恢复“ .jpg ”文件,因此,只需取消Scalpel配置文件的“ .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

如上所见,Scalpel现在正在执行其过程,恢复已删除的文件将需要一些时间,具体取决于尝试扫描的磁盘空间和机器的速度。当然,不管怎样,小编建议大家养成只使用delete而不是“ Shift+delete ”的习惯。因为正如所说,预防总是胜于治疗。

赞(0)
网站声明:本文内容由趣云笔记原创,部分资源收集于网络,如有侵权请联系企鹅:2472781824删除。
文章名称:《Scalpel恢复工具:恢复Linux已删除文件/文件夹》
文章链接:https://www.ecscoupon.com/1299.html
本站资源仅供个人学习交流,未经允许不得转载,更不允许用于商业用途。如需转载,请注明来源,感谢理解!