Ubuntu 12.04 下root目录不见的恢复问题

来源:互联网 发布:二级备案域名购买 编辑:程序博客网 时间:2024/05/16 14:57
首先声明方法不一定是有效的,涉及到中间的过程实验的方法比较多,也不是很清楚哪个步骤起决定性作用了,只能说是给大家个参考的。
起因:今天晚上在编译内核时出现了一个vi使用的错误,就按照网上的资料去修改文件,结果就发现悲剧了,root文件夹不见了,具体不见的过程也是不清楚,还处于菜鸟级别,可理解的。

电脑运行环境:双系统Ubuntu 12.04 和XP(XP下安装了虚拟机,虚拟机系统与硬盘上的ubuntu上安装的东西基本相同的)

下面我就把自己的主要步骤说下的:
1、参考:http://blog.chinaunix.net/uid-13369511-id-2896967.html
我就原文拷贝过来的,留作纪念
严重提示:请非常谨慎执行本文操作,操作前备份有用重要文件,出现问题请快回帖或向版主举报,以警示后人,切记切记。

最近老误删一些有用的文件(手贱),心里郁闷阿那个。于是痛下决心要学习文件恢复。上论坛找到一篇名为《[原创]学会恢复Linux系统里被删除的 Ext3文件 http://www.sjvj.com》http://forum.ubuntu.org.cn/viewtopic.php?f=42&t=128676的文章详细说明了方法。但是据回复贴子看,此方法不行,再百度 谷哥一下午,发现网上有很多人也在介绍这个方法。例如http://linux.chinaunix.net/techdoc/system/2007/11/15/972367.shtml[url][/url]和http://blog.163.com/qqbxclboy@126/blog/static/289027822007872350729/
方法都是同一个。但我试过,都是不行的。也许真的像一篇文章里说的:大家是以讹传讹,把ext2的恢复方法当成ext3的恢复方法,虽然ext,ext3基本相同,但反正上面的方法都是恢复不了我的误删ext3数据。

难道就这样放弃了吗,我不想,于是又开始新一轮的google,《谁说误删Ext3下的文件一定找不回》出自http://www.linuxdiyf.com/viewarticle.php?id=74382让我有点希望,不过他是来恢复纯Ascll文件的。不过让我看到了希望。


终于,我找到了文献1:《ext3 文件系统上恢复误删除文件》http://webwhere.cn/2008/7/6/recover-deleted-files-on-an-ext3-file-system他介绍了ext3grep这个恢复工具,正是今天我要郑重向大家推荐的主角。如果你以了解ext3grep,(下面的内容就当我是从火星来的怪物说的)。
本文参考文献还有文献2:《linux系统恢复删除文件》http://hi.baidu.com/wangtao8899/blog/item/cda6f2d923c8dbec38012f2d.html

要看ext3grep恢复文件的原理或下载源代码,请到(英文的)http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html我就略过了哈

上面两篇文章都是在redhat环境下的,经过本人实践在ubuntu下修改一下命令格式,完全能恢复ubuntu下ext3文件系统误删文件。
=============================================
方法如下

一。预备。(请先看注)
据文献2,要装一个e2fsprogs才能安装ext3grep恢复软件
代码:
代码:
apt-get install e2fsprogs

(注:不装应该也没事,好像是编译库什么的,反正我根据他还是编译不成功,本文介绍用deb直接装的)

二。安装
安装我们今天的主角:ext3grep,我下载官方源代码编译不成功(菜鸟),所以向大家介绍另一种方法,下载deb文件直接装。
下载地址:
引用:
http://packages.debian.org/zh-cn/sid/i386/ext3grep/download

(幸好ubuntu源自deban,我们有很多东西都可从他那里下)
双击安装就好了(这个说明下的,双击我的自动就进入了Ubuntu软件中心的,然后点击的安装)


三。恢复误删文件
我这里演示一下:首先我的分区如下(虚拟机哈)(用
代码:
df -h
查看)
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 1.9G 477M 1.3G 27% /
varrun 130M 104K 130M 1% /var/run
varlock 130M 0 130M 0% /var/lock
udev 130M 80K 130M 1% /dev
devshm 130M 12K 130M 1% /dev/shm
lrm 130M 38M 92M 30% /lib/modules/2.6.24-19-generic/volatile
/dev/sda1 76M 17M 56M 23% /boot
/dev/sda3 950M 30M 873M 4% /home
/dev/sda5 3.7G 1.6G 2.0G 46% /usr
/dev/sda7 183M 5.6M 168M 4% /vext3 这就是我误删文件的分区了
/dev/sda8 265M 13K 251M 1% /wext2
/dev/sda9 95M 33M 62M 35% /xreiserfs
/dev/sda10 93M 144K 93M 1% /yjfs
/dev/sda12 109M 1.0K 109M 1% /zfat32
/dev/sda11 184M 4.3M 180M 3% /zxfs

我误删文件的分区是在/wext3,也就是/dev/sda7,文件格式当然是ext3了,系统当然是ubuntu(都是废话)

现在真的开始恢复



1.卸载误删文件的分区(这点很重要)
代码:
代码:
umount /vext3     (这步骤我没敢执行的,因为我的是系统下的分区的啊,不知道到底起作用了没。希望高手看到指点下的)

注:如果被删除的文件在/或者其他系统分区,那就只能拆下盘挂到其他机子弄,或者livecd下弄吧?(livecd下可以装软件的说),不太清楚,找别的方法去把,不要再看下去了 :em06



2.查看被删除的文件
代码:
代码:
ext3grep /dev/sda7 --ls --inode 2  
(这个我自己改成了ext3grep /dev/loop0 --ls --inode 2)
下面是我的执行的df -h的结果的:
文件系统        容量  已用  可用 已用% 挂载点
/dev/loop0       29G  8.4G   19G   31% /
udev            997M  4.0K  997M    1% /dev
tmpfs           402M  928K  401M    1% /run
none            5.0M     0  5.0M    0% /run/lock
none           1005M  812K 1004M    1% /run/shm
/dev/sda7        77G   45G   32G   59% /host
/dev/sda8       135G  123G   12G   92% /media/5A64A92164A900BD
/dev/sda6        30G   18G   12G   60% /media/56A09A93A09A7967
/dev/sda5        30G   18G   13G   59% /media/16D492E7D492C7FF



会出来下面一段

Running ext3grep version 0.9.0
WARNING: I don't know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 24
Loading group metadata... done
Minimum / maximum journal block: 526 / 4640
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be from 1224513073 = Mon Oct 20 22:31:13 2008
Number of descriptors in journal: 28; min / max sequence numbers: 8 / 13
Inode is Allocated
Loading sda7.ext3grep.stage2... done
The first block of the directory is 512.
Inode 2 is directory "".
Directory block 512:
.-- File type in dir_entry (r=regular file, d=directory, l=symlink)
| .-- D: Deleted ; R: Reallocated
Indx Next | Inode | Deletion time Mode File name
==========+==========+----------------data-from-inode------+-----------+=========
0 1 d 2 drwxr-xr-x .
1 2 d 2 drwxr-xr-x ..
2 end d 11 drwx------ lost+found
3 4 r 12 D 1224546806 Tue Oct 21 07:53:26 2008 rrw-r--r-- aaa
4 5 r 13 D 1224546806 Tue Oct 21 07:53:26 2008 rrw-r--r-- aaa (3rd copy)
5 6 r 14 D 1224546806 Tue Oct 21 07:53:26 2008 rrw-r--r-- aaa (4th copy)
6 7 r 15 D 1224546806 Tue Oct 21 07:53:26 2008 rrw-r--r-- aaa (another copy)
7 8 r 16 D 1224546806 Tue Oct 21 07:53:26 2008 rrw-r--r-- aaa (copy)
8 end r 17 D 1224546806 Tue Oct 21 07:53:26 2008 rrw-r--r-- aaa~

注意:最后的几行就是我误删除的文件了,名字分别为aaa,aaa (3rd copy),aaa (4rd copy).........


3.恢复想要恢复的文件(请先看完注意再执行本行)
比如说这里我希望恢复aaa文件,

代码:
代码:
ext3grep /dev/sda7 --restore-file aaa   (这个我也实验了下的ext3grep /dev/sda7 --restore-file root,病急乱投医的哈)


就会提示你
Running ext3grep version 0.9.0
WARNING: I don't know what EXT3_FEATURE_COMPAT_EXT_ATTR is.
Number of groups: 24
Minimum / maximum journal block: 526 / 4640
Loading journal descriptors... sorting... done
The oldest inode block that is still in the journal, appears to be from 1224513073 = Mon Oct 20 22:31:13 2008
Number of descriptors in journal: 28; min / max sequence numbers: 8 / 13
Loading sda7.ext3grep.stage2... done
Restoring aaa
表示恢复成功,恢复好的文件在你当前目录的 RESTORED_FILES 文件夹中,,我这里就在/root/RESTORED_FILES中,打开一看,果然有无误删的文件aaa
注意:最好不要恢复在/root下吗,先执行 cd /tmp 或其他地方再执行步骤3比较好,这样恢复的文件就在 /tmp/RESTORED_FILES了

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------以下是我自己毫无根据的做的-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
完成了上面我查看了系统的恢复情况,只是表面性的查看的,看看了文件或者是文件夹的属性的,大家都知道的,在终端下不同属性显示的颜色还是有差别的。
结果是:在普通用户的情况下查看文件的属性正常,而root用户下显示的不正常,某些的终端命令也不能执行,如:ll 必须得写 ls -l。这样情况下,vi 等都正常使用,但是文件属性显示上感觉不爽,就继续研究的,后来查看/root下的文件发现比较少,和自己虚拟机相同目录下的比较确实少很多的。
自己认为这个是起主要作用的,前面的不知道有作用没的。
   接下来我将虚拟机下相同目录的文件拷贝到U盘,在通过U盘拷贝到系统中,文件是一个个拷贝到/root目录中的,不知道为什么采用全部拷贝的命令不行的。反正是拷贝完成后,重新启动电脑,进入终端下查看,普通用户和root在终端下查看文件属性全部正常。
以上只是个人完成系统恢复的过程,不知道上面的是不是正确的步骤,反正目前来看系统还是很正常的,有了问题再加上的。
希望大家看见不对的地方,多多指点的。


原创粉丝点击