这种情况发生过吗?你意识到自己误删了一个文件 – 无论是通过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
安装完成后,让我们进行简单测试。我们首先将从 /boot/images 目录中删除一个名为 nosdos.jpg
的图像文件:
# cd images # rm nosdos.jpg
要恢复它,请使用如下 foremost 命令(您需要首先确定底层分区 – 在这种情况下,/boot
位于 /dev/sda1
):
# foremost -t jpg -i /dev/sda1 -o /home/gacanepa/rescued
其中 /home/gacanepa/rescued 是另一个磁盘上的目录 – 请记住,在与被删除文件所在的相同驱动器上恢复文件并不是明智之举。
如果在恢复过程中占用了被删除文件曾经占用的磁盘扇区,则可能无法恢复任何数据。此外,在执行恢复操作之前停止所有活动至关重要。
在 foremost 执行完毕后,(如果恢复成功)恢复的文件将会在 /home/gacanepa/rescued/jpg 目录中找到。
总结
本文介绍了如何避免意外删除文件以及如何尝试恢复文件,如果发生了这样的不良事件。但请注意,根据分区大小,foremost 可能需要较长时间才能运行。
如往常一样,如果您有任何疑问或意见,请随时告诉我们。请使用下面的表格随时给我们留言。
Source:
https://www.tecmint.com/recover-deleted-file-in-linux/