ubuntu下误删源码文件
作为linux菜鸡,我发现误删后第一反应是去回收站……
百度了一下,按照教程一步步做的,成功恢复了,以下是恢复过程
恢复过程
查看文件系统和分区
使用命令df -T /home
,可以得到如下信息:
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda10 ext4 53697004 14241088 36705148 28% /
ext4文件系统,分区sda10,使用extundelete
注意:在操作过程中,不要在文件丢失的分区里再写入文件,浏览器下载,会放入/home/username/Downloads中的(虽然我这么做了,也恢复成功了)
下载,安装和使用extundelete
下载extundelete的源码,网站:
跳转到一个目录下,该目录所在分区与丢失文件目录分区不同,wget下载
解压
|
|
安装依赖
编译
进入src文件夹,extundelete就是可执行文件,注意,我的是sda10,需要自己查分区
|
|
执行后,src目录下产生了一个RECOVERED_FILES文件夹,里面放着整个分区下,近期删除的文件,至此恢复成功
linux文件系统
linux文件系统大牛博客写的非常好,先膜拜下:
我只是说明一下,为毛删了还能恢复
当我们rm一个文件时,数据并没有从磁盘分区上抹去,只是将文件所占的block设置为空闲
所以数据并没有丢失,只要接下的该分区的写入操作,没有覆盖掉那些刚被设为空闲的区块
在文件系统中,一个文件由目录项,inode和数据区域组成,目录项里放了文件名和inode标号,通过这个标号,可以在inode table中找到相应文件的inode数据
通过stat filename
就可以查看inode信息
当rm发生时,inode里的链接数变为0,这个因为我没查到怎么通过inode号来查看inode信息,所以用了个取巧的方法来实验
inode实验,rm后inode还在
首先,建立文件夹test,并进入test,用stat命令查看文件夹的inode信息
|
|
返回结果:
可以看到,连接数为2,inode号为3309381
然后,删掉当前目录,再次执行stat命令
返回结果:
可以看到,现在连接数变为了0,inode号没有变,inode信息还在,只不过被设为了可用,而其指向的block被设为了空闲