您是否曾经删除过文件并立即后悔?您需要它,而且很快!但是,如果文件太新了,还没有备份怎么办?幸运的是,您可以为此做一些事情。

rm:悔恨的简称?
使用rm命令太容易了 ,发现自己深深地感到遗憾地盯着终端窗口。通配符有一个小错误,您可以清除更多的内容。
默认的Linux文件系统 ext4 使用inode来保存有关每个文件的数据,并使用inode表来跟踪inode。索引节点包含有关文件的元数据,例如其名称,拥有者,权限是什么,等等。
它还包含指向指向文件的硬链接的入口点。每个文件至少有一个硬链接。每次创建新的硬链接时,硬链接数都会增加一。每次删除硬链接时,索引节点中的硬链接计数都会减少一。
删除文件时,索引节点已标记为未使用(并准备重用),最后一个硬链接将被删除。发生这种情况时,该文件将不会出现在目录列表中,并且无法使用或访问。
但是,组成文件内容的数据仍然存在于硬盘驱动器上。但是,如果您可以修补索引节点,使其包含正确的信息,则文件将被还原。当然,这仅在组成硬盘驱动器上文件的数据保持不变且不被覆盖的情况下才有效。
或者,您可以创建一个新的inode,从旧的inode复制剩余的数据,然后替换丢失的位。
这些都是不平凡的活动。通常,当您误删除文件时,这是在最糟糕的时刻。总是在需要该文件的时候,现在就需要它。您没有时间了解部门编辑器和其他实用程序。另外,如果它是您刚刚创建的文件,则可能尚未备份,因此这些文件也都不会帮助您。
它testdisk来了。它易于使用,不需要详细,低级的文件系统知识。让我们看看如何使用它!
安装测试盘
要testdisk在Ubuntu上安装,请使用以下命令:
sudo apt-get install testdisk

在Fedora上,您需要输入:
sudo dnf install testdisk

在Manjaro上,您必须使用pacman:
sudo pacman -Sy testdisk

使用测试盘
尽管它在终端窗口中运行, testdisk但确实具有基本的界面。您使用箭头键进行导航,然后使用Enter进行选择。为使内容整洁,最好为还原的文件创建目录。
我们键入以下内容为恢复的文件创建一个名为“ restoreed”的目录:
mkdir restored

我们键入以下内容以切换到新目录并testdisk从此处开始:
cd restored/

我们必须使用sudo和testdisk,因此我们键入以下内容:
sudo testdisk

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

您只需按Enter即可接受突出显示的选项并创建一个新的日志文件。它将在您开始的目录中创建testdisk。当您进行选择时, testdisk询问哪个硬盘驱动器拥有您要使用的文件系统。
它列出了可以找到的硬盘驱动器以及squashfs “ / dev / loop”文件。从中安装的每个应用程序都会有其中之一snap。它们是只读的,因此您不应该设法从这些文件系统中删除任何内容。

该测试计算机中只有一个物理硬盘驱动器,因此我们使用向下箭头突出显示“ / 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创建一个日志文件,它将位于“已恢复”目录中。由于我们的恢复文件位于“ / home / dave”,因此它们已被复制到我们的“ Restored”目录中,该目录嵌套在同名目录中。
我们可以使用进入复制的“ dave”目录 cd。确保/路径上不包含前导斜杠(),而要更改为本地“ home”,而不是系统“ / home”。
我们输入以下内容:
cd home/dave
恢复的文件在该目录中,因此我们键入:
ls

让我们再看一下使用-l (长列表)选项的恢复文件:
ls -l

因为我们曾经sudo 启动过 testdisk,所以恢复的文件已经以“ root”作为所有者进行了还原。我们可以使用chown以下方式将所有者更改回“ dave” :
sudo chown dave.dave *

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

testdisk:救济代码
在恢复重要文件后的那种轻松感,这是您永远都会体会到的,片刻前,它感觉到了无法挽回的丢失。
这就是为什么 testdisk这样方便的实用程序。通过菜单进行设置并可以开始恢复文件后,很容易陷入高亮显示的节奏c,C,重复。