在文件操作中,有时候我们会经常用rm -f、或者是delete来误删文件。这时候不必惊慌,若被你误删的文件比较小,是可以比较简单的恢复的回来的,但是若被你删除的文件过大,文件被存放在linux的多个分区中,那么可能就要请专业的数据恢复团队来恢复了。
在进行操作之前,我们来了解一下linux的文件系统。
我们都知道,linux下面的文件系统是用文件名来进行文件的查找的,但是为了提高查找速度和方便多用户对于文件的共享,文件名往往不是直接对应文件的物理位置,而是要经过一个索引,如下图所示:
在日常生活中,我们使用的linux往往是单用户,然后一旦我们删除一个文件,这个文件其实并没有在系统中消息,系统只是把这个文件的索引节点给删除了。因此用户根据用户名就找不到文件地址了。也正因为这个原因,我们才可以用工具把文件恢复。
至于恢复的思路,相信你已经知道,那就是要找到文件所在的区块(也就是文件的物理地址)
下面进行文件的恢复(这里用的是系统自带的debugfs来进行文件系统操作)
(1)首先在用户目录下创建test.txt文件
(2)然后用rm -f 来删除文件,验证文件已被删除,用ls -l 查看已经不存在了
(3)接下来在root用户下调用debugfs系统工具
(4)我们可以开多一个X-shell来查看目录所在的文件系统
(5)知道文件系统后,我们就可以利用系统函数打开该文件系统来查看,是否存在我们删除的文件。
(6)然后利用文件名前面的号码,来查找该文件所在的区块。
(6)知道区块和偏移值后,我们就可以利用文件拷贝的命令dd来进行区块和目录之间的拷贝(更加详细的dd操作参考链接:https://www.cnblogs.com/ginvip/p/6370836.html)
(7)做到这一步,已经完成了文件的恢复。