如何在 Linux 中恢复一个删除了的文件

在这篇文章里,将分享一个很有用的技巧来避免此事发生。同时,也会分享一个工具,不小心删除了某些不该删除的文件时,也许用得上。

--GabrielCánepa

本文导航

-把删除创建为rm-i的别名15%

-取证工具-Foremost50%

-总结84%

你曾经是否遇到这样的事?当你发现的时候,你已经通过删除键,或者在命令行中使用rm命令,错误的删除了一个不该删除的文件。

在第一种情况下,你可以到垃圾箱,搜索那个文件[1],然后把它复原到原始位置。但是第二种情况又该怎么办呢?你可能知道,Linux命令行不会把删除的文件转移到任何位置,而是直接把它们移除了,biu~,它们就不复存在了。

把删除创建为rm-i的别名

当-i选项配合rm命令(也包括其他文件处理命令比如cp或者mv[2])使用时,在删除文件前会出现一个提示。

这同样也可以运用到当复制,移动或重命名一个文件[3],当所在位置已经存在一个和目标文件同名的文件时。

这个提示会给你第二次机会来考虑是否真的要删除该文件-如果你在这个提示上选择确定,那么文件就被删除了。这种情况下,很抱歉,这个技巧并不能防止你的粗心大意。

为了rm-i别名替代rm,这样做:

aliasrm='rm-i'

运行alias命令可以确定rm现在已经被别名了:

为rm增加别名

然而,这只能在当前用户的当前shell上有效。为了永久改变,你必须像下面展示的这样把它保存到~/.bashrc中(一些版本的Linux系统可能是~/.profile)。

在Linux中永久增添别名

为了让~/.bashrc(或~/.profile)中所做的改变立即生效,从当前shell中运行文件:

.~/.bashrc

在Linux中激活别名

取证工具-Foremost

但愿你对于你的文件足够小心,当你要从外部磁碟或USB设备中恢复丢失的文件时,你只需使用这个工具即可。

然而,当你意识到你意外的删除了系统中的一个文件并感到恐慌时-不用担心。让我们来看一看foremost,一个用来处理这种状况的取证工具。

要在CentOS/RHEL7中安装Foremost,需要首先启用Repoforge:

#rpm-Uvh

#yuminstallforemost

然而在Debian及其衍生系统中,需这样做:

#aptitudeinstallforemost

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

#cdimages

#rmnosdos.jpg

要恢复这个文件,如下所示使用foremost(要先确认所在分区-本例中,/boot位于/dev/sda1分区中)。

#foremost-tjpg-i/dev/sda1-o/home/gacanepa/rescued

其中,/home/gacanepa/rescued是另外一个磁碟中的目录-请记住,把文件恢复到被删除文件所在的磁碟中不是一个明智的做法。

如果在恢复过程中,占用了被删除文件之前所在的磁碟分区,就可能无法恢复文件。另外,进行文件恢复操作前不要做任何其他操作。

当foremost执行完成以后,恢复的文件(如果可以恢复)将能够在目录·/home/gacanepa/rescue/jpg`中找到。

总结

在这篇文章中,我们阐述了如何避免意外删除一个不该删除的文件,以及万一这类事情发生,如何恢复文件。还要警告一下,foremost可能运行很长时间,时间长短取决于分区的大小。

如果您有什么问题或想法,和往常一样,不要犹豫,告诉我们。可以给我们留言。

本文由LCTT[5]原创编译,Linux中国荣誉推出

推荐文章