我们都经常遇到一个问题,我们在 Linux 中不小心删除了一些文件,我们肯定后悔在我们没有在垃圾箱中找到它之后删除了。但是如果我们能恢复它们呢?在本文中,我们将讨论如何在 Linux 中恢复已删除的文件。
每当我们从系统中删除某些内容时,它实际上并不会被删除,直到该空间被磁盘中的其他内容覆盖。您还可以阅读有关如何安全地永久删除任何文件的信息。
在 Linux 中恢复已删除文件的最佳方法如下:
1. 卸载:
在我们意识到我们删除了重要文件后立即卸载设备是防止已删除文件的数据块被其他数据覆盖的最佳选择。
- 在第一次关闭系统,并通过从 Live CD/USB 启动来执行恢复过程
- 搜索包含您删除的文件的分区,例如- /dev/sda1
- 恢复文件(确保您有足够的空间)
2.lsof命令:
有时打开的文件被意外删除,在这种情况下,lsof 命令是恢复该文件的救命命令。
在文件被保持打开的应用程序关闭之前,在 lsof 命令的帮助下重新创建文件的副本。发生这种情况是因为 inode 仍然处于活动状态,因此数据块仍在磁盘上,直到打开它的应用程序将其关闭。
第一步:在/tmp目录下创建一个测试文件
touch /tmp/test
第 2 步:运行一些可以打开文件的程序:
tail -f /tmp/test &
注意:这里的数字是 8561,但在您的情况下,它可能会有所不同,因此请相应地使用命令。
第三步:列出确认开启流程的流程
ps -ef | grep 8561 | grep -v grep
第 4 步:手动删除文件并尝试列出文件,您将看到一条错误消息,因为它已被删除
$ rm /tmp/test
$ ls -l /tmp/test
所以现在我们确定文件确实被删除了,现在让我们尝试在 lsof 命令的帮助下恢复它
第 5 步:要显示进程的打开文件描述符,请使用 lsof 命令
$lsof | grep -i test
保持该文件打开的进程的 PID 显示在第二列中。
第 6 步:现在我们必须在 /proc 目录中找到打开的文件描述符
$ls -l /proc/8561/fd/3
第 7 步:现在可以将打开的文件(已删除但被其他进程打开)复制回其原始位置,即 /tmp 下。之后,您还可以按其原始名称重命名
$ cp /proc/8561/fd/3 /tmp/
$mv /tmp/3 /tmp/test
$ ls -l /tmp/test
现在您已完成恢复您认为永远丢失的文件。
3. Foremost(取证工具):
Foremost 是一个或多或少预装在 kali Linux 中的取证工具,但如果它不存在,您可以从命令行安装它。最重要的工具用于从硬盘、存储卡、笔式驱动器等中恢复已删除的文件。
此工具使用称为文件雕刻的过程来恢复数据。
要恢复已删除的图像,请使用以下命令:
sudo foremost -v -q -t png -i /dev/sda1 -o ~/test
其中/dev/sda1是 /boot 所在的底层分区。
其中 / home/tithi/Downloads/gg是单独磁盘上的一个目录,恢复的文件将位于该目录中(不要恢复已删除文件所在的同一驱动器上的文件,它可能无法恢复任何内容)。许多文件将被一起恢复,恢复的名称文件将与原始文件不同。