Linux文件误删之血的教训总结

罪魁祸首命令:[root@VM_198_209_centos home]# find . -type f -delete。其实罪魁祸首是我自己,今天在云服务器下本想查找一个文件并删除之,却忘记输入选项-name来指定待删文件名,导致/home/目录下所有文件全部丢失!

平常习惯在/home/目录下进行linux的相关学习,所以本人所有的数据几乎都在该目录下,home目录下有如下子目录,因为只是删除了文件(-type f),目录还在保留,然而并没有什么卵用,子目录下的文件也全部丢失,只留下了空壳而已:

可悲的是,/home/目录下还有个人站点数据,同样数据全无了。

此为背景。

误删之后,首先就想有什么方法可以恢复的?在网上苦苦寻觅了半天,总结以下两个方法吧,假如以后会用到呢……但愿不会再用!

1.前言

首先我们需要知道,在刚删除一个文件之后,该文件其实并没有从我们的硬盘上摸去,只是inode索引删除了相关信息,这也就是为什么有可能恢复的主要原因。

但是,千万记住,误删文件之后一定不要再向硬盘做写入动作,不然可能就真的万劫不复了。

2.debugfs

这是linux系统自带了一个工具,可以用来恢复删除的文件。以此法来进行恢复要稍微麻烦一点。

(1)在命令行输入debugfs

(2)进入debugfs之后,使用open命令打开文件系统,可以通过df查看,例如我的linux文件系统/dev/vda1挂载在根目录/下的

使用命令open /dev/vda1打开文件系统,再使用命令ls -d /home/查看被删除的文件的情况:

可以看到/home/目录下的所有被删除的文件,由于我的/home/目录下还是目录,所以我们再进入底层目录ls -d /home/shell/lsscookbok/

该目录下有多个文件被删除,比如file.txt。我们现在来恢复这个文件,观察file.txt后面尖括号中的一串数字:330911

(3)输入命令logdump -i <330911>

找到block后面的一串数字:1310822

(4)quit退出debugfs,执行下面命令:
dd if=/dev/vda1 of=/tmp/file.txt.bk bs=4096 count=1 skip=1310822

(5)进入/tmp/目录下,发现file.txt.bk,文件找回。

说明:对该方法的有效性并不是很确定。因为以我找回的文件来看,打开是乱码。不知道是有写入操作造成的还是由于其他一些原因?建议大家使用第二个方法。

3.extundelete

在试用了debugfs之后,发现找回的文件乱码,于是接着在网上找其他的方法。但是,要知道我已经对硬盘进行过了写入操作,所以还能不能找回来我并不确定,但想一想我那些文件对我很重要的,都是平时学习留下的笔记。所以又试了下面这个方法,结果证明我的文件找回来了一部分!由于有过写入操作没能全部找回,但也满足了,人要知足呀。

这里贴一个地址,大家跟着一步一步操作就可以了:http://www.cnblogs.com/edwardcmh/archive/2013/05/30/3108741.html

安装完这个软件后,会在其目录下有一个RECOVERED_FILES目录,恢复的内容就在这里面:

可以看到,恢复了11个文件夹,而/home/目录在误删前有15个文件夹,有4个没有找回。

最后,谨慎使用find . -type f -delete和rm -rf 命令!

心还是痛的,我的socket文件夹都是我的心血。

发表评论

电子邮件地址不会被公开。 必填项已用*标注