本人40G的数据丢失,文件系统为NTFS,在Windows2000下快速格式化。
经分析,以前的$MFT的前几个File Record被新的$MFT改写,以前的文件基本上都在。
请教:
1:如何手动修改$MFT,改变$MFT的大小和包含的File Record的数量以及把以前的大量File Record有机的连接起来?2:File Record 的详细结构. NTFS是如何用File Record组织目录树的?如果第一中方案行不通(就我的水平而言),我可以自己写个程序,从$MFT 中遍历所有File Record读出其$DATA数据保存到其它盘.(多属性的文件在我的盘中基本上没有)
若有详细的NTFS的中文资料愿再加贴赠300分我五年的心血已付诸东流.
注:欢迎大家共同探讨NTFS,请不要提及数据恢复软件,谢谢.
经分析,以前的$MFT的前几个File Record被新的$MFT改写,以前的文件基本上都在。
请教:
1:如何手动修改$MFT,改变$MFT的大小和包含的File Record的数量以及把以前的大量File Record有机的连接起来?2:File Record 的详细结构. NTFS是如何用File Record组织目录树的?如果第一中方案行不通(就我的水平而言),我可以自己写个程序,从$MFT 中遍历所有File Record读出其$DATA数据保存到其它盘.(多属性的文件在我的盘中基本上没有)
若有详细的NTFS的中文资料愿再加贴赠300分我五年的心血已付诸东流.
注:欢迎大家共同探讨NTFS,请不要提及数据恢复软件,谢谢.
解决方案 »
- 某自称是大牛的公司出的题目,进来帮忙看看!谢谢,关于类的初始化列表
- OpenGL里进行坐标变换的问题(glPopMatrix)
- vb vc dll 传递数值:如何将vb的字符传递到vc++ MFCDLL中,比如传递一个AVI文件名称,再后在MFCDLL的Dialog中可以播放AVI文件!!!!!!!!!!!!!!!!!!!!希望有代码!!!!!
- 马上要去深圳了,想找个VC方面的工作,大家给点建议,先谢为敬!
- 多线程 中创建 无模式对话框,执行出问题!
- 大家看一下,这个绘图程序有什么问题?
- 屏幕上只有那么多个相素,怎么实现象Autocad那样的xxx.xxx点坐标?
- 关于使用wininet与匿名代理通信的问题
- WlanConnect连接中文wifi不成功
- 串行通信是如何实现握手的
- 线程的通讯问题啊??求求你们了
- wise installation的安装语言问题
Offset Size Description
0x00 4 Magic number 'FILE'
0x04 2 Offset to the update sequence
0x06 2 Size in words of Update Sequence Number & Array (S)
0x08 8 $LogFile Sequence Number (LSN)
0x10 2 Sequence number
0x12 2 Hard link count
0x14 2 Offset to Update Sequence Array
0x16 2 Flags
0x18 4 Real size of the FILE record
0x1C 4 Allocated size of the FILE record
0x20 8 File reference to the base FILE record
0x28 2 Next Attribute Id
0x2A 2 Align to 4 byte boundary
0x2C 4 Number of this MFT Record
2 Update Sequence Number (a)
2S-2 Update Sequence Array (a)
谁知道最后俩行是什么意思?以下是个Index Header,组成NTFS的目录结构,据说是个B+树
Offset Size Description
0x00 8 MFT Reference of the file
0x08 2 Size of this index entry
0x0A 2 Offset to the filename
0x0C 2 Index Flags
0x0E 2 Padding (align to 8 bytes)
0x10 8 MFT File Reference of the parent
0x18 8 File creation time
0x20 8 Last modification time
0x28 8 Last modification time for FILE record
0x30 8 Last access time
0x38 8 Allocated size of file
0x40 8 Real size of file
0x48 8 File Flags
0x50 1 Length of filename (F)
0x51 1 Filename namespace
0x52 2F Filename
2F+0x52 P Padding (align to 8 bytes)
P+2F+0x52 8 VCN of index buffer with sub-nodes
http://unc.dl.sourceforge.net/sourceforge/linux-ntfs/ntfsdoc-0.5.zip
Offset Size Description
0x00 4 Magic number 'FILE'
0x04 2 Offset to the update sequence
0x06 2 Size in words of Update Sequence Number & Array (S)
0x08 8 $LogFile Sequence Number (LSN)
0x10 2 Sequence number
0x12 2 Hard link count
0x14 2 Offset to Update Sequence Array
0x16 2 Flags
0x18 4 Real size of the FILE record
0x1C 4 Allocated size of the FILE record
0x20 8 File reference to the base FILE record
0x28 2 Next Attribute Id
0x2A 2 Align to 4 byte boundary
0x2C 4 Number of this MFT Record
2 Update Sequence Number (a)
2S-2 Update Sequence Array (a)
谁知道最后俩行是什么意思?以下是个Index Header,组成NTFS的目录结构,据说是个B+树
Offset Size Description
0x00 8 MFT Reference of the file
0x08 2 Size of this index entry
0x0A 2 Offset to the filename
0x0C 2 Index Flags
0x0E 2 Padding (align to 8 bytes)
0x10 8 MFT File Reference of the parent
0x18 8 File creation time
0x20 8 Last modification time
0x28 8 Last modification time for FILE record
0x30 8 Last access time
0x38 8 Allocated size of file
0x40 8 Real size of file
0x48 8 File Flags
0x50 1 Length of filename (F)
0x51 1 Filename namespace
0x52 2F Filename
2F+0x52 P Padding (align to 8 bytes)
P+2F+0x52 8 VCN of index buffer with sub-nodes ====================================================================最后两行的意思是:Update Sequence Number:
更新序列号,大小为2B,是为了保证该扇区是否正确,以扇区的最后两个字节与该值比较,如果一样,则说明该扇区是正确的,否则就是有问题。
Update Sequence Array:
更新序列数组,大小一般为2*2B=4B,如果该扇区正确,在解析的时候,则将该数组中的两个2B大小的数字依次复制到该File Record所在的两个扇区的最后两个字节。
0x2A 2 Align to 4 byte boundary这只是在XP下有用,如在NT,或2000中,将会被
2 Update Sequence Number (a)
2S-2 Update Sequence Array (a)
所代替。本来可以多写点,但日期过了这么久,估计没什么人能看到。
1、程序必须可以正常读卷,可用CreateFile();
2、遍历整个大概范围内的File Record,不要只遍历被格式化后的$MFT所指的大小,一般来说,File Record都是连续分布的。
3、每个File Record是1024B,将其解析出来,感兴趣的内容为是否删除,是否为目录,文件名,父目录,Data Runs,其中Data Runs就是文件的内容。楼主所提供的文档里,都有详细的描述。
4、这样,将每个属于文件的File Record生成一个文件,就可以了,由于只是对一些文件感兴趣,也就没有必要再去组建树了,那样挺麻烦的。有关讲述NTFS的书:WINDOWS 2000 SERVER技术内幕 (北京8小时送货)
Inside WINDOWS 2000 SERVER作者: [美]William Boswell 译者:杨洪涛 李博
市场价: ¥98.00
总站会员价:
¥73.50(4-5星会员) ¥76.44(1-3星会员) ¥78.40(普通会员)
出版社: 清华大学出版社 ISBN:7-302-04913-0
出版日期:2001-09-01 丛书: 北京科海培训中心图书http://www.china-pub.com/computers/common/info.asp?id=4188
NTFS搞懂要比FAT,EXT2复杂多了,不过也是我见过最好,最有效率,最先进的文件系统。前段时间,看到有报道说reiserfs 4是最先进的,我没有研究过,不知哪位有这方面资料?
可以再详细些吗