博客统计信息

51cto推荐博客
用户名:zhangzj1030
文章数:87
评论数:133
访问量:106118
无忧币:747
博客积分:1282
博客等级:5
注册日期:2008-07-29

恢复ext2文件系统中的被删除文件--debugfs
2009-07-30 18:15:05
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://tech110.blog.51cto.com/438717/185569
debugfs是linux系统自带的一个文件恢复工具,它可以恢复ext2文件系统的文件,但不能恢复ext3文件系统的文件,下面以一个实例来讲解debugfs恢复文件的方法。
首先增加一个虚拟硬盘,分区,格式化(mkfs.ext2),挂载分区。虚拟机环境实现。
实验分区为/dev/sdb2  ,创建分区步骤省略。
[root@oracledb ~]# mkfs.ext2  /dev/sdb2
新建一个目录,挂载上去
[root@oracledb /]# mkdir guazai
[root@oracledb /]# mount  /dev/sdb2  /guazai
新建一个文件,vi file.txt 随便写点内容即可。
[root@oracledb guazai]# ll
total 20
-rw-r--r-- 1 root root    40 Jul 30 15:42 file.txt
drwx------ 2 root root 16384 Jul 30 15:39 lost+found
为了模拟故障,使用rm命令删除file.txt
[root@oracledb guazai]# rm -rf file.txt
[root@oracledb guazai]# ll
total 16
drwx------ 2 root root 16384 Jul 30 15:39 lost+found
该分区上的file.txt被删除了,怎样将其恢复回来呢?下面就是见证奇迹的时刻。
重新挂载分区,以只读方式
[root@oracledb ~]# mount -r -o remount /dev/sdb2
-r表示以只读方式,注意必须设置为只读方式
验证是否设置成功
[root@oracledb ~]# cd /guazai
[root@oracledb guazai]# mkdir aa
mkdir: cannot create directory `aa': Read-only file system
表示设置只读方式成功。
如果不能重新挂载,执行命令查看是谁正在使用该分区的文件
[root@oracledb guazai]# fuser -v -m /dev/sdb2
因为在这里是实验,故没有重要的进程和用户,直接将其杀死
[root@oracledb guazai]# fuser -k -v -m /dev/sdb2
执行命令debugfs
[root@oracledb guazai]# debugfs /dev/sdb2
debugfs 1.39 (29-May-2006)
debugfs:
在debugfs提示符下输入命令:lsdel  可以看到以下信息:
debugfs:  lsdel
 Inode  Owner  Mode    Size    Blocks   Time deleted
    12      0 100600   4096    1/   1 Thu Jul 30 15:42:13 2009
    13      0 100644     40    1/   1 Thu Jul 30 15:43:56 2009
2 deleted inodes found.
如果不知道以前被删除的文件名,可输入命令 ls -d查看
debugfs:  ls -d
 2  (12) .    2  (12) ..    11  (4072) lost+found   <0> (24) .file.txt.swp  
<0> (4028) file.txt 
 
从时间来看,删除的文件应该是inode为13的文件
使用dump来恢复:
debugfs:dump  <13>  /root/file.txt
其中13为inode,/root/file.txt为要恢复到得路径,路径和文件名可以随便设置
退出查看
debugfs:  quit
[root@oracledb ~]# pwd
/root
[root@oracledb ~]# ll file.txt
-rw-r--r-- 1 root root 40 Jul 30 15:52 file.txt
[root@oracledb ~]# cat file.txt
wo shi file file.txt
filesystem is ext2
恢复的文件就是我之前删除过的file.txt文件。如果不是的话,把13改成12就可以了。
好了ext2文件系统的文件恢复就到这里了,希望对大家有所帮助。

本文出自 “宗军” 博客,请务必保留此出处http://tech110.blog.51cto.com/438717/185569

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:原创技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
2009-07-31 16:27:42
写的不错哈

2009-07-31 16:46:32
学习学习~

2009-10-20 17:27:24
mount -o remount,ro
只是暂时为了这个分区的安全性和恢复数据完整性的概率而已,不是一个必须的选择这样解释会更好的哦
mount -o remount,ro /dev/sda1 /test
这样会更好
博主回复:
2009-10-22 11:28:42
谢谢你的意见!

2010-01-21 22:17:07
ext2 分区很少用了 debugfs 也过时了
呵呵 建议你学习下ext3grep
这个可以修复 ext3 格式 的文件系统

2010-07-22 14:55:34
我也是按你说的做的,怎么用lsdel找不到误删除的文件呢,我的文件系统格式是ext3

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: