extundelete - Ubuntu 误删文件恢复
系统版本:14.04
文件系统版本:ext4
可恢复的原理
首先知道什么是 inode
inode 存储了包含文件的元信息,比如文件的字节数,文件的读写执行权限,文件的时间戳,文件数据 block 的位置等信息。
所谓 block 就是类似于 Windows 中簇的概念,是文件系统读写磁盘的最小单位,这里的文件数据 block 存储了文件数据在磁盘中的数据。
当我们删除文件,inode 号不变,其信息还在,只不过该 inode 号被设置为可用,其指向的 block 空间被设置为空闲,只要我们能【在 inode 复用之前】找到要恢复的文件的 inode 且
【inode 指向的 block 没有被覆盖】,然后就可以正确恢复文件。
对应的两种恢复失败的情况: inode 已被重新使用
Block 被覆盖
关于 inode
http://www.ruanyifeng.com/blog/2011/12/inode.html
第一步:尽量减少要恢复的分区的文件操作
为了预防文件误删除的情况,可以提前安装文件恢复程序,否则程序的安装也可能会导致文件恢复失败。
如果可以,将要恢复的分区卸载或设置为只读分区,防止 inode 及数据被覆盖使用。
umount /分区
mount –o remount,ro /分区
关于分区挂载
http://www.cnblogs.com/avril/archive/2010/03/23/1692783.html
第二步:查看文件系统和分区
使用 df –T /home/命令查看/home/文件夹对应的分区和文件系统查看文件系统和分区
文件系统 类型 1K-blocks 已用 可用 已用% 挂载点
/dev/sda1 ext4 19478204 4300092 14165632 24% /
这里文件系统分区为 /dev/sda1 文件系统 ext4 extundelete 只支持 ext4/ext3 文件系统关于 ext4、ext3
http://os.51cto.com/art/201205/334497_all.htm
关于 df 命令
http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html
第三步:检查 g++编译器
输入 g++
如果没有,按照提示进行安装即可第四步:下载安装 extundelete
1. 下载 网址:http://extundelete.sourceforge.net/
2. 解压 跳转到下载目录,执行
tar –xjvf extundelete-0.2.4.tar.bz2
3. 安装依赖
sudo apt-get install e2fsprogs sudo apt-get install e2fslibs-dev
4. 编译
./configure
make
sudo make intall
第五步:使用
这里我们只演示恢复单个文件,且文件所在文件夹没有被删除的情况,具体请参考 extundelete 的帮助文档
建立路径及文件如图所示
里面存储的是我们熟悉的 Hello,World
1.首先需要 root 权限
http://www.cnblogs.com/weiweiqiao99/archive/2010/11/10/1873761.html
User-root sudo su 即可
Root->user ctrl+D
2.查看要恢复文件夹所包含文件的 inode
ls –id /路径
3.查看要恢复文件所在文件夹所在分区
df /路径
这里我们看到分区为 /dev/sda1
4.显示文件夹所包含的文件的 inode
sudo extundelete /自己的分区 /路径 –inode 文件夹 inode 号
如果分区依然挂载,会提示以下信息,提示操作可能失败
输入 y 即可
5. 恢复 inode 指定的文件到特定文件夹
sudo extundelete /自己的分区 –restore-inode 要恢复的文件的 inode –o 要恢复到的文件
恢复的文件的命名为 file.inode 如果不指定输出目录,默认的输出目录为 RECOVERED_FILES 目录
细心的同学可以发现,当前的 inode 并不是之前的 inode ,因为中间的多次测试都失败了,比如
恢复了错误的文件还有就是,所要恢复的 inode 已经被重新分配了
删除需谨慎
参考将 rm 映射到 trash,让 rm 类似于回收站的功能
http://sparkandshine.net/prevention-rm-command-accidentally-erased-computer-files/
chattr 命令防止某个文件被删除
http://coolsky.blog.51cto.com/177347/1230332
备份
https://www.zybuluo.com/ghosert/note/3408
等…