Как получить смещение в блочном устройстве inode в удаленном разделе

Во время новой установки я случайно отформатировал диск, содержащий данные. Я пытался использовать некоторые инструменты: прежде всего 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;
    });
}

Я нашел данные, которые кажутся записью в каталоге dev:

 ===== Current offset: 233590226944 - 217.5478515625Gio ====== 
scripts entry found at offset 233590227030
services entry found at offset 233590227014
projects entry found at offset 233590228106

Если это так, я получил номера инодов его дочерних каталогов: скрипты, проекты, сервисы, ...

Но я не знаю, что с этим делать! Я попытался определить местоположение этих inode, основываясь наэто руководство, но так как я не смог найти суперблок удаленной файловой системы, мне просто нужно догадаться о размере блока, количестве блоков, ... и это кажется мне немного неясным, чтобы надеяться получить результат.

Итак, могли бы вы иметь некоторые интервалы для всех значений, необходимых для получения смещения индекса, и более формальную формулу для получения этого смещения?

Ответы на вопрос(1)

Ваш ответ на вопрос