2

Я работаю с программным обеспечением, называемым logstash, которое обрабатывает файлы журнала и сохраняет прогресс в файле следующим образом:

82484791-1419-65536 0 0 26507948
82484791-1420-65536 0 0 26071030
82484791-1421-65536 0 0 3065829
82484791-1422-65536 0 0 3973980
82484791-1425-65536 0 0 4301931

Я хочу видеть имена файлов, которые были обработаны.

Согласно документации это следует интерпретировать как:

Файлы Sjectedb - это текстовые файлы с четырьмя столбцами:

Номер инода (или эквивалент). Основной номер устройства файловой системы (или эквивалентный). Дополнительный номер устройства файловой системы (или эквивалентный). Текущее смещение байта в файле.

В Linux я могу преобразовать индекс в имя файла, используя:

find /path/to/mountpoint -inum <inode number>

или же

debugfs -R 'ncheck <inode number>' /dev/sda2 2>/dev/null

Что эквивалентно Windows для этого? Как преобразовать дескрипторы файлов / дескрипторы файлов Windows в имена файлов и каталогов?

1 ответ1

2

Файловые дескрипторы и файловые дескрипторы эфемерны: они существуют только во время работы программы и могут быть использованы повторно. Находить их в лог-файле довольно бессмысленно.

Linux-иноды не являются файловыми дескрипторами. Они являются частью структуры файловой системы на диске в обычных файловых системах, таких как Ext2 и Ext3. Поскольку они так важны для Linux, Linux будет имитировать номера инодов при доступе к файловой системе Microsoft FAT.

Это приводит нас к следующей проблеме: Windows не использует inode, потому что типичные файловые системы Microsoft не используют inode. Довольно неясно, что такое "или эквивалентное" значение. Если бы мне пришлось угадывать, я бы предположил обновить порядковый номер (USN), но не верьте мне на слово.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .