如何使用testdisk在Linux上恢复已删除的文件

时间:2020-01-09 10:39:34  来源:igfitidea点击:

Linux误删文件怎么办?

安装testdisk

要在Ubuntu上安装testdisk,请使用以下命令:

sudo apt-get install testdisk

在Fedora上,我们需要输入:

sudo dnf install testdisk

在Manjaro上,我们必须使用pacman

sudo pacman -Sy testdisk

使用testdisk

尽管它在终端窗口中运行,但是" testdisk"确实具有基本的界面。我们使用箭头键进行导航,然后使用Enter进行选择。为了使内容整洁,最好为还原的文件创建目录。

我们输入以下命令为恢复的文件创建一个名为restore的目录:

mkdir restored

我们输入以下内容以切换到新目录并从此处启动testdisk

cd restored/

我们必须将sudotestdisk一起使用,因此我们输入以下内容:

sudo testdisk

testdisk提出的第一个问题是关于日志记录。它可以创建一个新的日志文件,使用现有的文件,也可以根本不记录任何内容。选择哪个选项都没有关系。它不会影响testdisk的运行方式。

我们可以按Enter接受突出显示的选项并创建一个新的日志文件。它将在我们启动testdisk的目录中创建。当我们进行选择时," testdisk"会询问哪个硬盘驱动器拥有我们要在其上工作的文件系统。

它列出了可以找到的硬盘驱动器,以及squashfs/ dev / loop文件。从"快照"安装的每个应用程序都会有其中一个。它们是只读的,因此我们不应该设法从这些文件系统中删除任何内容。

该测试计算机中只有一个物理硬盘驱动器,因此我们使用向下箭头突出显示/ dev / sda选项。然后,我们使用向右箭头选择"继续",然后按Enter。

testdisk还需要知道分区类型。它提供了一个选项菜单,以及在底部自动检测到的分区类型。

除非有充分的理由,否则请突出显示自动检测到的分区的类型,然后按Enter。

在出现的功能菜单中,突出显示"高级",然后按Enter。

分区选择菜单将会出现。

我们要查找的文件位于Linux文件系统分区中。我们的硬盘驱动器上只有一个Linux分区,但我们可能会有更多。

选择文件所在的分区,使用向左和向右箭头键选择"列表",然后按Enter。出现文件选择菜单。

使用上下箭头或者PgUp和PgDn键浏览文件和目录列表。按右箭头或者Enter键进入目录,按左箭头或者Esc退出目录。

我们正在寻找dave拥有的文件。所有用户帐户的文件都位于主目录中。因此,我们突出显示主目录,然后可以按向右箭头或者Enter键进入该目录。

然后为我们列出所有用户帐户。我们突出显示" dave",然后按向右箭头或者Enter输入该目录。

现在我们可以看到属于dave帐户的文件。红色的条目已被删除。我们浏览文件和目录,直到找到要恢复的文件。

要恢复文件,只需突出显示它,然后按c(小写)。

显示发生变化,并告诉我们为恢复的文件选择目的地。因为我们创建了一个名为Restored的目录并从中启动testdisk,所以列表(。)中的第一项就是该目录。要将删除的文件恢复到该目录,请按C(大写)。

完成此操作后,我们将返回到文件选择显示。如果要恢复更多文件,只需重复此过程。突出显示已删除的文件,按c(小写)进行复制,然后按C(大写)进行恢复。

使用还原的文件

还原文件后,目录树将重新构建到其原始位置,这很有用,因为它会提醒我们原始文件在硬盘驱动器上的位置。这意味着,如果我们需要将其复制回去,则知道将其放置在何处。

如果我们从不同的文件系统位置恢复了多个碰巧具有相同文件名的文件,则无论如何都需要将它们分开存储。

我们可以键入以下内容来查看"已还原"目录的内容:

ls

如果我们要求testdisk创建一个日志文件,它将位于Restored目录中。因为我们的恢复文件位于/ home / dave,所以它们已被复制到我们的Restored目录中,并嵌套在同名目录中。

我们可以使用cd进入复制的dave目录。确保在要更改为本地主目录而不是系统/ home的路径上未包含前导斜杠(/)。

我们输入以下内容:

cd home/dave

恢复的文件在该目录中,因此我们键入:

ls

让我们再次使用-l(长列表)选项来查看恢复的文件:

ls -l

因为我们使用sudo启动testdisk,所以恢复的文件已经以root用户作为所有者进行了还原。我们可以使用chown将所有者改回dave:

sudo chown dave.dave *

我们键入以下内容以确保已恢复正确的所有权:

ls -l