Linux 里恢复被误删文本文件的一种简便方法

如果有特定格式的文件,这种方法理论上是可以恢复的,因为它们的原理都是一样的,但是需要自己去分析文件格式,还需要了解文件系统的格式,所以一般只用来恢复纯文本的文件。

是这样的,如果一个文件从文件系统中删除了,它仅仅是在文件系统中“消失”——比如将这个文件所在的位置标记成“未使用”,只是文件系统的数据结构有所改变,但实际它还存在于物理结构中的,在没有其他文件使用这块空间的之前,我们可以认为这个文件还存在于硬盘之中。

好在 Linux 对设备都可以以字符流的方式访问,比如 /dev/sda1。那么,在恢复之前就停止对丢失文件所在分区的写入操作,然后借助 Linux 发行版里提供了数多强大的命令,就可以以字符流的方式访问设备文件,找到文本文件内容,再拷贝出来整理下即可:

grep -a -B5 -A5 -i "文本里的关键字" /dev/sdaN(N 代表设备编号) > /tmp/file

参数说明:

之后重定向到 /tmp/file里,程序运行完毕后自行整理文件即可。