
Я работаю с программой 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
Я хочу увидеть названия обработанных файлов.
Согласно документации это следует интерпретировать как:
Файлы Sincedb представляют собой текстовые файлы с четырьмя столбцами:
Номер inode (или эквивалент). Основной номер устройства файловой системы (или эквивалент). Дополнительный номер устройства файловой системы (или эквивалент). Текущее смещение байта в файле.
В Linux я могу преобразовать inode в имя файла с помощью:
find /path/to/mountpoint -inum <inode number>
или
debugfs -R 'ncheck <inode number>' /dev/sda2 2>/dev/null
Какой аналог в Windows позволяет это сделать?Как преобразовать дескрипторы файлов/файлов Windows в имена файлов и каталогов?
решение1
Файловые дескрипторы и файловые дескрипторы эфемерны: они существуют только во время работы программы и могут быть использованы повторно. Поиск их в файле журнала довольно бессмыслен.
Linux inodes являютсянетФайловые дескрипторы. Они являются частью структуры файловой системы на диске в распространенных файловых системах, таких как Ext2 и Ext3. Поскольку они так важны для Linux, Linux будет имитировать номера inode при доступе к файловой системе Microsoft FAT.
Это приводит нас к следующей проблеме: Windows не использует inodes, потому что типичные файловые системы Microsoft не используют inodes. Довольно неясно, что такое значение "или эквивалент". Если бы мне пришлось угадывать, я бы предположилОбновление порядкового номера (USN)но не верьте мне на слово.