网站搜索

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


你有遇到过这种情况吗?您意识到您错误地删除了一个文件 - 通过 Del 键或在命令行中使用 rm

在第一种情况下,您始终可以转到废纸篓,搜索该文件,并将其恢复到原始位置。但第二种情况呢?我相信您可能知道,Linux 命令行不会将删除的文件发送到任何地方 - 它删除它们。屁股。他们走了。

建议阅读:如何使用手术刀工具恢复已删除的文件/目录

在本文中,我们将分享一个可能有助于防止这种情况发生在您身上的技巧,以及如果您在任何时候粗心地这样做的话,您可以考虑使用的工具。

创建“rm -i”的别名

-i 开关与 rm(以及其他文件操作工具,如 cp 或 mv)一起使用时,会在删除文件之前出现提示。

这同样适用于在已存在同名文件的位置复制、移动或重命名文件。

此提示让您有第二次机会考虑是否确实要删除该文件 - 如果您确认提示,该文件就会消失。在这种情况下,我很抱歉,但这个提示并不能保护您免受自己的粗心大意的影响。

要将 rm 替换为 'rm -i' 的别名,请执行以下操作:

alias rm='rm -i'

alias 命令将确认 rm 现在已使用别名:

但是,这只会在当前 shell 中的当前用户会话期间持续。要使更改永久生效,您必须将其保存到 ~/.bashrc (某些发行版可能会使用 ~/.profile),如下所示:

为了使 ~/.bashrc (或 ~/.profile)中的更改立即生效,请从当前 shell 获取该文件:

. ~/.bashrc

取证工具 – 最重要

希望您小心对待您的文件,并且只需要在从外部磁盘或 USB 驱动器恢复丢失的文件时使用此工具。

但是,如果您意识到自己不小心删除了系统中的文件并且会惊慌,请不要这样做。首先让我们看一下专为此类场景设计的取证工具。

要在 CentOS/RHEL 7 中安装最重要的版本,您需要首先启用 Repoforge

rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
yum install foremost

而在 Debian 及其衍生产品中,只需这样做

aptitude install foremost

安装完成后,我们来进行一个简单的测试。我们首先从 /boot/images 目录中删除名为 nosdos.jpg 的图像文件:

cd images
rm nosdos.jpg

要恢复它,请按如下方式使用mostly(您需要首先识别底层分区 - 在这种情况下,/dev/sda1/boot 所在的位置):

foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued

其中 /home/gacanepa/rescued 是单独磁盘上的目录 - 请记住,在已删除文件所在的同一驱动器上恢复文件并不是明智之举。

如果在恢复过程中,您占用了已删除文件原来所在的相同磁盘扇区,则可能无法恢复任何内容。此外,在执行恢复之前必须停止所有活动。

mostly 完成执行后,恢复的文件(如果可以恢复)将在 /home/gacanepa/rescued/jpg 目录中找到。

概括

在本文中,我们解释了如何避免意外删除文件以及如何在发生此类意外事件时尝试恢复该文件。但请注意,根据分区的大小,最重要的可能需要相当长的时间才能运行。

一如既往,如果您有任何疑问或意见,请随时告诉我们。请随时使用下面的表格给我们留言。