[文章作者:张宴 本文版本:v1.0 最后修改:2009.07.06 转载请注明原文链接:http://blog.zyan.cc/linux_ext3_undelete/]

  环境:CentOS 5.3 x86_64下,/dev/sdb1为数据分区/data0,EXT3文件系统。
  前因:误删了/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件。由于忘了备份httpcws.cpp文件,重新开发工作量较大,因此只有恢复该文件一条路可走。

  debugfs命令针对EXT2分区还行,但对EXT3分区就帮不上忙了。偶然发现的一款开源软件,解决了我的大忙。该软件下载网址为:
  http://code.google.com/p/ext3grep/

  1、先安装ext3grep软件:
wget http://ext3grep.googlecode.com/files/ext3grep-0.10.1.tar.gz
tar zxvf ext3grep-0.10.1.tar.gz
cd ext3grep-0.10.1
./configure
make
make install


  2、umount /data0分区:
umount /data0

  如果提示busy,先kill正在使用这个目录的进程,再umount:
fuser -k /data0
umount /data0


  3、查询所有Inode,(执行需要几分钟~十多分钟):
ext3grep /dev/sdb1 --ls --inode 2

  点击在新窗口中浏览此图片

  4、逐级查找Inode,看是否能找到httpcws.cpp文件(此步骤也可省略):

  点击在新窗口中浏览此图片

  点击在新窗口中浏览此图片

  5、恢复/data0/tcsql/cankao/phpcws-1.5.0/httpcws.cpp文件:
ext3grep /dev/sdb1 --restore-file tcsql/cankao/phpcws-1.5.0/httpcws.cpp

  点击在新窗口中浏览此图片

  如果提示以下信息,则表示恢复成功:
  Restoring tcsql/cankao/phpcws-1.5.0/httpcws.cpp

  这时,执行ext3grep命令的当前目录下将会自动生成一个名为RESTORED_FILES的文件夹,文件夹下的tcsql/cankao/phpcws-1.5.0/httpcws.cpp即为恢复的文件。查看了一下,和被删除前的内容一样,大功告成。


  6、重新mount /data0分区:
mount /dev/sdb1 /data0


  参考资料:http://www.xs4all.nl/~carlo17/howto/undelete_ext3.html




技术大类 » 其他Unix技术 | 评论(53) | 引用(0) | 阅读(84298)
mcsrainbow
2009-7-6 08:52
非常感谢!
xi2008wang
2009-7-6 09:51
学习
神仙 Homepage
2009-7-6 09:53
难道代码没svn起来?
张宴 回复于 2009-7-6 12:55
完成代码中的一项重要功能,调试通过,才提交SVN。
babo
2009-7-6 16:21
收获很大。一直觉得linux下面恢复文件这个问题。这下也有办法了。
小 Y
2009-7-6 18:04
呵呵....学习学习呀........
TKS
zer4tul
2009-7-6 22:55
好文!收藏之
wiliiwin
2009-7-7 16:17
很好很强大 学习了 以后碰到这样的问题 就知道怎么处理了
dd_macle
2009-7-7 16:25
收藏了,谢谢张兄
依曼丽 Email Homepage
2009-7-7 17:45
不错,收藏了~~~
dd
2009-7-8 12:55
http://blog.chinaunix.net/u/30312/showart.php?id=1814218
VPS侦探 Email Homepage
2009-7-8 14:33
vps主机观察者 Homepage
2009-7-10 11:25
在非图形界面下总感到有压力。cry
51mx Homepage
2009-7-10 11:54
真没想到 刚看了这篇文章 就是使用

我不相信把数据库给drop了,本来打算用这个工具来恢复,感觉时间较长,还有风险,所以最后用日志恢复了
Cookies Email
2009-7-10 14:37
张宴师兄,回邮件!
111
2009-7-14 18:52
这个不是原创吧 -_-
CrazyLemon Email Homepage
2009-7-14 19:37
上次我也误删了,要是早看到这篇文章就好了
ERICO
2009-7-16 11:21
想不到你也遇到这种事情了(BS一下),我前段时间刚遇到,最后解决方法和你一样。
白开水
2009-7-20 17:28
ext3grep有三个问题请张老师请教:
1.  如果是/ 分区的文件误删除了,是不是就恢复不了了,umount不掉/分区,只能到单用户模式下恢复是吧
2.ext3grep是需要e2fsprogs-libs-1.35-12.4.EL4支持,但是我的系统是as4-u4的系统,没有装e2fsprogs-libs-1.35-12.4.EL4
[root@voip ~]# rpm -qa | grep e2fs
e2fsprogs-1.35-12.4.EL4
e2fsprogs-devel-1.35-12.4.EL4
晚上也找不到相同版本的e2fsprogs-libs,用源码包编译了好象也不行,郁闷,centos5以上的版本都装了e2fsprogs-libs,装ext3grep就没有问题
3. 张老师你恢复的是文件,要是恢复目录呢用什么命令呀
gqkkk
2009-7-28 11:36
很实用
1314it Email Homepage
2009-7-29 18:09
看见 ext3grep 就伤心

之前有次删除了重要数据  备份是几天前手动备份的  都了几天数据  非常伤心  当时大脑一片空白  直冒冷汗 .. 哎 ..

我的环境是这样的  LVM卷里的分区 500GB的数据 我使用 ext3grep 进行扫描 进展非常慢 我计算了下 估计需要 20多天  我放弃了查询备份

我一直想找个方法  就像 windows 下的 winhex 一样  只扫描  硬盘的 某一个区域 这样降低搜索时间  可是一直没找到  英文阅读能力也不是很好  最终还是放弃了  ...

不知道  张宴大哥  能不能给点指点 ..

对了  张宴大哥  你这个图是用什么软件 画的啊  ?
这是图片的源地址 (baidu相册上面) : http://hiphotos.baidu.com/shengit/pic/item/ed9bc7fa0381b90a4e4aea46.jpeg
分页: 1/3 第一页 1 2 3 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]