如何在 Linux 中恢复已删除的文件?


毫无疑问,丢失重要文件或意外删除文件的想法确实令人恼火,我们几乎所有人都遇到过这种情况,特别是如果文件非常重要,无论是工作文件、个人照片还是您无法缺少并希望恢复的视频。

如果您遇到此问题,请不要担心。有很多解决方案和程序专门用于恢复文件,特别是如果您使用的是著名的 Linux 发行版。还有许多多样且免费的程序专用于所有著名的发行版。

Linux 数据和已删除文件恢复程序

这些程序在您错误删除或格式化并从 SSD 硬盘存储设备以及其他携带存储内存的电子设备(如 DVD 光盘、USB 闪存和其它光盘或设备)中删除文件时,可以恢复丢失、已删除和损坏的文件。

在本教程中,我们将解释其中一个最佳工具,称为 **TestDisk**,以及另一个称为 **Extundelete** 的工具。

TestDisk

TestDisk 被认为是恢复已删除的照片、视频、文件和损坏数据的最佳程序之一。它是一个开源工具,可以恢复所有文件,无论其类型和大小。它在从硬盘和 USB 恢复数据方面也非常出色。它在 Linux 发行版上也能出色地工作,并且也用于数字取证调查。

在 Linux 中安装 TestDisk

由于 TestDisk 未随 Linux 发行版一起安装,因此您首先需要使用以下命令在 Ubuntu 上安装它:

apt install testdisk

对于 **Fedora**:

sudo dnf install testdisk

首次运行 TestDisk 时,您应该会看到如下屏幕:

Install TestDisk in Linux

您将通过按 Enter 创建一个新的日志文件。如果您没有使用 sudo 运行 TestDisk,这将弹出一个屏幕,要求您输入密码。

TestDisk with sudo

之后,您应该会看到如下屏幕:

TestDisk

在此,选择分区并点击 **Proceed**。确保 “Proceed” 选项突出显示,如图像所示。

接下来,您将看到如下屏幕:


此屏幕要求您选择分区类型。在本例中,将是 **Intel**,因此按 Enter。

下一个屏幕将如下所示:

partition type

在此,如果您有损坏的磁盘,则应继续使用 **Analyze** 选项修复它。但是,如果您只需要恢复过程,请选择 **Advanced** 选项,您将看到如下屏幕:

damaged disk

选择 **Image Creation** 选项并按 Enter。

之后,它将为您提供一个屏幕,选择将恢复的数据保存到哪里,如下所示:

restored data

使用箭头键设置位置,并在正确的位置时点击 **C**。

之后,恢复过程应该开始,您将看到如下屏幕:

recovery process

最后,恢复完成后,在您保存数据的位置运行此命令:

testdisk image.dd

这将向您显示所有恢复的数据。

Extundelete 工具

当您在终端上工作时,此命令工具很有用,并且错误地忘记并使用命令 **rm** 删除了一个文件。如果是这种情况,Extundelete 工具可以将其恢复到其原始位置。

与 **Testdisk** 相比,我更喜欢使用 **Extundelete**,因为它速度快、简单,并且具有与 test disk 几乎相同的功能(但并非全部)。

就像 **Testdisk** 一样,**Extundelete** 工具默认情况下未安装,您需要先安装它。

对于 **Ubuntu / Mint**:

sudo apt install extundelete

对于 **Fedora**:

sudo dnf install extundelete

当您在 Linux 中删除某些内容时,特别是如果它是一个大文件,第一步是卸载分区。这可以防止将更多数据写入文件所在的位置(这可能会覆盖已删除的数据)。

要卸载分区,请使用以下命令:

sudo umount /dev/sda2

在此示例中,已删除的文件位于 ** /dev/sda2** 上。

要识别系统上的分区,请使用命令 **lsblk**。例如,在我的系统上,它看起来像这样:

lsblk

卸载后,工具的使用非常简单。

让我们举一个我删除了位于 **home** 文件夹中的名为 test 的文件的例子。

要使用 **extundelete** 恢复特定文件,请使用以下命令:

extundelete /dev/sda1 --restore-file /path/to/deleted/file

我们使用选项 ** /dev/sda2** 指定文件所在的分区,然后使用 **--restore-file** 指示我们要恢复文件,然后是我们要恢复的文件的路径。例如:

sudo extundelete /dev/sda2 --restore-file ~/test

这将恢复文件 **test**,该文件位于分区 ** /dev/sda2** 上。

结论

在本教程中,我们解释了如何使用 TestDisk 和 Extundelete 从硬盘恢复已删除的数据。

我们首先从 TestDisk 开始,它是一个众所周知且功能强大的工具,具有许多功能。但是,在本文中,我们仅解释了如何使用它从特定磁盘恢复数据。最后,我们提供了一个如何使用 Extundelete 恢复文件的示例。

更新于: 2024-11-04

31 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告