在文件操作中,有时候我们会经常用rm -f、或者是delete来误删文件。这时候不必惊慌,若被你误删的文件比较小,是可以比较简单的恢复的回来的,但是若被你删除的文件过大,文件被存放在linux的多个分区中,那么可能就要请专业的数据恢复团队来恢复了。
在进行操作之前,我们来了解一下linux的文件系统。

我们都知道,linux下面的文件系统是用文件名来进行文件的查找的,但是为了提高查找速度和方便多用户对于文件的共享,文件名往往不是直接对应文件的物理位置,而是要经过一个索引,如下图所示:

testdisk linux 找回删除的文件 linux删除文件找回来_linux


在日常生活中,我们使用的linux往往是单用户,然后一旦我们删除一个文件,这个文件其实并没有在系统中消息,系统只是把这个文件的索引节点给删除了。因此用户根据用户名就找不到文件地址了。也正因为这个原因,我们才可以用工具把文件恢复。

至于恢复的思路,相信你已经知道,那就是要找到文件所在的区块(也就是文件的物理地址)

下面进行文件的恢复(这里用的是系统自带的debugfs来进行文件系统操作)

(1)首先在用户目录下创建test.txt文件

testdisk linux 找回删除的文件 linux删除文件找回来_linux_02


(2)然后用rm -f 来删除文件,验证文件已被删除,用ls -l 查看已经不存在了(3)接下来在root用户下调用debugfs系统工具

testdisk linux 找回删除的文件 linux删除文件找回来_linux_03


(4)我们可以开多一个X-shell来查看目录所在的文件系统

testdisk linux 找回删除的文件 linux删除文件找回来_文件系统_04


(5)知道文件系统后,我们就可以利用系统函数打开该文件系统来查看,是否存在我们删除的文件。

testdisk linux 找回删除的文件 linux删除文件找回来_linux_05


testdisk linux 找回删除的文件 linux删除文件找回来_文件名_06


(6)然后利用文件名前面的号码,来查找该文件所在的区块。

testdisk linux 找回删除的文件 linux删除文件找回来_文件名_07


(6)知道区块和偏移值后,我们就可以利用文件拷贝的命令dd来进行区块和目录之间的拷贝

testdisk linux 找回删除的文件 linux删除文件找回来_文件名_08


(7)做到这一步,已经完成了文件的恢复。

补充,linux中还有直接檫除文件磁盘的指令,例如wipe,这种就是可以做到直接删除而且不可恢复的效果。