ubuntu 文件恢复

来源:互联网 发布:c语言根号 编辑:程序博客网 时间:2024/05/29 16:37

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 的帮助文档

clip_image002

建立路径及文件如图所示

image

里面存储的是我们熟悉的 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 /路径

clip_image007

3.查看要恢复文件所在文件夹所在分区

df /路径

clip_image009

这里我们看到分区为 /dev/sda1

4.显示文件夹所包含的文件的 inode

sudo extundelete /自己的分区 /路径 –inode 文件夹 inode 号

clip_image011

如果分区依然挂载,会提示以下信息,提示操作可能失败

clip_image013

输入 y 即可

clip_image015

5. 恢复 inode 指定的文件到特定文件夹

sudo extundelete /自己的分区 –restore-inode 要恢复的文件的 inode –o 要恢复到的文件

clip_image017

恢复的文件的命名为 file.inode 如果不指定输出目录,默认的输出目录为 RECOVERED_FILES 目录

clip_image018

细心的同学可以发现,当前的 inode 并不是之前的 inode ,因为中间的多次测试都失败了,比如

clip_image019

恢复了错误的文件还有就是,所要恢复的 inode 已经被重新分配了

clip_image021

删除需谨慎

参考将 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

等…

原创粉丝点击