在全新安装过程中,我不小心格式化了包含数据的磁盘。我尝试过使用一些工具:最重要的是testdisk,但我没有得到好的结果。 (看我不成功的帖子在超级用户上)。
所以我决定阅读一些有关的文档ext2 文件系统结构,我可以获得一些结果:
删除的分区有一个像这样的目录树:
dev
|-scripts
|-projects
|-services
|-...
Medias
|-downloads
|-Musique
|-...
backup
...
因此,基于 ext2 目录项格式:
Directory Entry
Starting_Byte Ending_Byte Size_in_Bytes Field_Description
0 3 4 Inode
4 5 2 Total size of this entry (Including all subfields)
6 6 1 Name Length least-significant 8 bits
7 7 1 Type indicator (only if the feature bit for "directory entries have file type byte" is set, else this is the most-significant 8 bits of the Name Length)
8 8+N-1 N Name characters
我试图找到一些与这个结构匹配的数据。
我使用了这个脚本:
var bindexOf = require('buffer-indexof');
var currentOffset=0;
var deviceReadStream = fs.createReadStream("/dev/sdb");
deviceReadStream.on('error',function(err){
console.log(err);
});
deviceReadStream.on('data',function(data){
var dirs = ["dev","scripts","services","projects","Medias","downloads","Musique","backup"];
dirs.forEach(function(dir){
dirOctetFormat = new Buffer(2);
dirOctetFormat.writeUInt8(dir.length,0);
dirOctetFormat.writeUInt8(2,1);// type is directory
dirOctetFormat= Buffer.concat( [dirOctetFormat, new Buffer(dir)]);
var offset = bindexOf( data, dirOctetFormat );
if( offset >= 0 ){
console.log( dir + " entry found at offset " + (currentOffset + offset) );
}
});
currentOffset += data.length;
});
}
我发现 data 似乎是 dev 目录的目录条目:
===== Current offset: 233590226944 - 217.5478515625Gio ======
scripts entry found at offset 233590227030
services entry found at offset 233590227014
projects entry found at offset 233590228106
如果是这样的话,我得到了它的子目录的索引节点号:脚本、项目、服务......
但我不知道该怎么办!
我试图根据以下信息推断出这些索引节点的位置本指南,
但由于我无法找到已删除文件系统的超级块,我只能猜测块大小、块数量……
对我来说,希望获得结果似乎有点模糊。
那么,您是否可以为获取索引节点偏移量所需的所有值提供一些间隔,以及获取此偏移量的更正式的公式?