如何在 Linux 中恢复已删除的文件
您是否遇到过这种情况?您意识到自己错误地删除了一个文件 – 无论是通过Del键,还是rm
在命令行中使用。
在第一种情况下,您可以随时进入“废纸篓”,搜索文件,然后将其恢复到原始位置。但是第二种情况呢?我相信您可能知道,Linux 命令行不会将已删除的文件发送到任何地方 - 它会删除它们。糟糕。它们消失了。
建议阅读: 如何使用 Scalpel 工具恢复已删除的文件/目录
在本文中,我们将分享一个可能有助于防止这种情况发生在您身上的技巧,以及一个您可以考虑使用的工具,以防您在任何时候粗心大意地这样做。
创建“rm -i”的别名
当此开关与rm(以及其他文件操作工具,例如 cp 或 mv-i
)一起使用时,会在删除文件之前出现提示。
这同样适用于在已经存在同名文件的位置复制、移动或重命名文件。
此提示会给你第二次机会考虑是否真的要删除该文件 - 如果你确认提示,该文件就会消失。在这种情况下,很抱歉,但此提示无法保护你免受自己的粗心大意。
要用 的别名替换rm'rm -i'
,请执行以下操作:
alias rm='rm -i'
alias命令将确认rm现在已别名:
但是,这只会在当前 shell 中的当前用户会话期间持续。要使更改永久生效,您必须将其保存到~/.bashrc
(某些发行版可能会~/.profile
改为使用),如下所示:
为了使~/.bashrc
(或~/.profile
)中的更改立即生效,请从当前 shell 获取文件:
. ~/.bashrc
取证工具——Foremost
希望您小心处理您的文件,并且仅在从外部磁盘或 USB 驱动器恢复丢失的文件时才需要使用此工具。
但是,如果您意识到自己不小心删除了系统中的文件,并感到惊慌失措,请不要慌张。让我们来看看 foremost,一款专为此类情况设计的取证工具。
要在CentOS/RHEL 7中安装 foremost ,您需要先启用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
安装完成后,我们进行一个简单的测试。我们首先nosdos.jpg
从/boot/images目录中删除一个名为的映像文件:
# cd images # rm nosdos.jpg
要恢复它,请使用以下命令(您需要先识别底层分区 -在这种情况下/dev/sda1
是/boot
所在的位置):
# foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued
/ home /gacanepa/rescued是位于单独磁盘上的目录 - 请记住,在已删除文件所在的同一驱动器上恢复文件并不是明智之举。
如果在恢复过程中,您占用了被删除文件所在的相同磁盘扇区,则可能无法恢复任何内容。此外,在执行恢复之前,务必停止所有活动。
在 foremost 执行完成后,恢复的文件(如果可以恢复)将在/home/gacanepa/rescued/jpg目录中找到。
概括
在本文中,我们解释了如何避免意外删除文件,以及在发生此类意外事件时如何尝试恢复文件。但请注意,根据分区的大小,Foremost 可能需要相当长的时间才能运行。
与往常一样,如果您有任何问题或意见,请随时告诉我们。请随时使用下面的表格给我们留言。