免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: ltgzs777
打印 上一主题 下一主题

[其他] 对ext3下的文件恢复1 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-01-20 09:59 |只看该作者

注意:


我分析一下上面的结果:



①、“WARNING”,这种情况出现在系统处于“脏”的状态或者是被恢复磁盘处于挂接状态,特别要注意,对于被恢复文件所在的磁盘一定要处于未被挂接的状态;

②、“Writing output to directory RESTORED_FILES/恢复完成后会在用户当前所在的目录中创建一个名RESTORED_FILES的目录,恢复的文件就放置在该目录相应的目录中;同时也要注意,如果在目录RESTORED_FILES/jj已存在,那么它不会被覆盖;

③、“D”和“d”,“D”表了包含了目录的开始;而“d”表示了包含多个目录条目;

④、“sdb1.ext3grep.stage2包含了分析报告;

⑤、“Restoring jj”表示成功恢复了该文件。


按次序,恢复工作会经过两个阶段(stage),阶段1和阶段2,并且创建了两个文件DEVICE.ext3grep.stage1DEVICE.ext3grep.stage2



我们看一下,以下是在执行“ext3grep
/dev/sdb1--restore-file jj
”命令之前的目录结构,只有ext3grep命令:


  

[root@nas bin]# pwd

  

/usr/local/ext3grep/bin

  

[root@nas bin]# tree

  

.

  

`-- ext3grep

  


  

0 directories, 1  file

  



在执行完成“ext3grep
/dev/sdb1--restore-file jj
”命令之后的目录结构:


  

[root@nas bin]#  tree

  

.

  

|-- RESTORED_FILES

  

|
`-- jj

  

|-- ext3grep

  

|--  sdb1.ext3grep.stage1

  

`-- sdb1.ext3grep.stage2

  



为了证实,你可看一下文件jj的内容:


  

[root@nas bin]#  cat RESTORED_FILES/jj

  

123456

  



没问题,绝对恢复了,这是我们要得到的结果。


ext3grep的命令行选项中使用--dump-names可以转储所有文件的文件名:


  

[root@nas ~]# ext3grep
/dev/sdb1 --dump-names

  

Running ext3grep version 0.10.2

  

Number of groups: 597

  

Minimum / maximum journal block: 1545  / 35886

  

Loading journal descriptors...  sorting... done

  

The oldest inode block that is still  in the journal, appears to be from 1273827555 = Fri May 14 16:59:15 2010

  

Number of descriptors in journal: 109;  min / max sequence numbers: 5 / 39

  

Loading sdb1.ext3grep.stage2... done

  

.jj.swp

  

jj

  

lost+found

  

pp

  


如果对选项--dump-names的输出满意,那么就可以用--restore-all选项代替--dump-names来恢复所有文件。--restore-all在效果上实际上就是--restore-file--dump-names的组合。


正如以前提到的,正确的使用选项--after 是一个明智的选择,这样使得ext3grep工作更有效,既避免了ext3grep试图恢复更旧的文件,也缩短了用户的等待时间。注意,这时--dump-names的输出是未滤过的,而--restore-file(--restore-all)可以联合使用--after选项。


例如:


  

[root@nas ~]#ext3grep
/dev/sdb1 --restore-all --after=1274249319

  

Running ext3grep version 0.10.2

  

Only show/process deleted entries if  they are deleted on or after Wed May 19 14:08:39 2010.

  


  

Number of groups: 597

  

Minimum / maximum journal block: 1545  / 35886

  

Loading journal descriptors...  sorting... done

  

The oldest inode block that is still  in the journal, appears to be from 1273827555 = Fri May 14 16:59:15 2010

  

Number of descriptors in journal: 109;  min / max sequence numbers: 5 / 39

  

Loading sdb1.ext3grep.stage2... done

  

Not undeleting ".jj.swp"  because it was deleted before 1274249319 (3214533652)

  

Not undeleting "jj" because  it was deleted before 1274249319 (3214533652)

  

Restoring lost+found

  

Restoring pp

  


可以看到,在这里只有pp文件被恢复,按照--after设定的时间它是最后一个被删除的文件,--after精确到秒级,在设置--after时要比要恢复的文件大1即可。


阶段1的格式:


阶段1的过程被写入DEVICE.ext3grep.stage1文件,这里的DEVICE会被驱动器的名字所替代(例如/dev/sdb1,那么DEVICE就是sdb1)


例如:


  

[root@nas /]# more  sdb1.ext3grep.stage1

  

# Stage 1 data for /dev/sdb1.

  

# Inodes and directory start  blocks that use it for dir entry '.'.

  

# INODE : BLOCK [BLOCK ...]
//
注意这里的格式

  

2 : 1539 1628 1781 1790 2036  2048 2097 3257 3437

  

11 : 1540

  

32769 : 1779 1830 1867 1883  1889 1895 1913 1919 1926 1952 1978 2012 96256

  

507905 : 3435 1021952

  

1048577 : 3255 3266 3282  3293 3299 3309 3317 3323 3338 3561 3568 2123776

  

1048578 : 3337 3344 3352  3357 3370 3378 3383 3396 3409 3414 2111488

  

3522561 : 7057408

  

3522616 : 7072649

  


……

  

7503873 : 15022080

  

# Extended directory blocks.

  

36067

  

102245

  

……

  

7073648

  

# END

  


在这个sdb1.ext3grep.stage1文件中,首先表明了工作对象/dev/sdb1,然后指明了节点和块的格式,在格式这一部分中,第一栏是节点,然后再跟一个空格,空格之后是一个冒号,然后又是一个空格,空格之后是一个使用空格符作为分隔符的block号列表。


阶段2的格式:



阶段2的过程被写入DEVICE.ext3grep.stage2文件,例如:


  

[root@nas bin]#  more sdb1.ext3grep.stage2

  

# Stage 2 data for  /dev/sdb1.

  

# Inodes path and  directory blocks.

  

# INODE PATH BLOCK  [BLOCK ...]

  

2 '' 1539

  

11 'lost+found'  1540 7073648

  

# END

  



在这个阶段,由函数init_directories()来负责,包含了很多启发式的代码。首先决定哪些块是真正的目录开始块,然后分配每一个扩展目录块到其中的目录,最后将这个结果保存在一个文件(DEVICE.ext3grep.stage2),那就是这里的sdb1.ext3grep.stage2。注意文件中每一个条目的格式,万一出了错,你能够通过编辑这个文件(删除无效的或添加正确的块)来修复,然而绝对不要添加或移除注释:如果你对这个文件改变的太多,那么会使得ext3grep感到“困惑”,而不能够正常工作。


最后再次提一点,正确的使用“--after dtime”和“--before dtime”参数特别重要。




论坛徽章:
0
12 [报告]
发表于 2011-01-20 10:18 |只看该作者
好长啊!!

建议整个文档发出来!!

论坛徽章:
0
13 [报告]
发表于 2011-01-20 10:32 |只看该作者
回复 13# nhuczp


   本来是文档,可是这论坛的帖子字数有限。

论坛徽章:
7
双子座
日期:2013-09-09 15:55:31CU大牛徽章
日期:2013-09-18 15:22:06CU大牛徽章
日期:2013-09-18 15:22:20CU大牛徽章
日期:2013-09-18 15:22:26CU大牛徽章
日期:2013-09-18 15:22:31CU大牛徽章
日期:2013-09-18 15:22:37CU大牛徽章
日期:2013-09-18 15:22:46
14 [报告]
发表于 2011-01-20 21:19 |只看该作者
好文章,可惜没文档啊。

论坛徽章:
0
15 [报告]
发表于 2011-02-15 09:49 |只看该作者
楼主,能不能把文档作为一个附件发上来啊?

论坛徽章:
0
16 [报告]
发表于 2011-02-22 10:03 |只看该作者
回复 16# 柳拂风


    试着传了,可是传不上去!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP