Windows: Wie findet man den Dateinamen für einen Dateihandle?

Windows: Wie findet man den Dateinamen für einen Dateihandle?

Ich arbeite mit einer Software namens Logstash, die Protokolldateien verarbeitet und den Fortschritt in einer Datei wie dieser speichert:

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

Ich möchte die Namen der verarbeiteten Dateien sehen.

Laut Dokumentation ist dies wie folgt zu interpretieren:

Sincedb-Dateien sind Textdateien mit vier Spalten:

Die Inode-Nummer (oder gleichwertig). Die Hauptgerätenummer des Dateisystems (oder gleichwertig). Die Nebengerätenummer des Dateisystems (oder gleichwertig). Der aktuelle Byte-Offset innerhalb der Datei.

Unter Linux kann ich den Inode mit folgendem Befehl in einen Dateinamen konvertieren:

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

oder

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

Was ist das Windows-Äquivalent hierfür?Wie konvertiere ich die Windows-Dateihandles/Dateideskriptoren in Datei- und Verzeichnisnamen?

Antwort1

Dateideskriptoren und Dateihandles sind flüchtig: Sie existieren nur, während ein Programm ausgeführt wird, und können wiederverwendet werden. Sie in einer Protokolldatei zu finden, ist ziemlich sinnlos.

Linux-Inodes sindnichtDateideskriptoren. Sie sind Teil der Dateisystemstruktur auf der Festplatte in gängigen Dateisystemen wie Ext2 und Ext3. Da sie für Linux so wichtig sind, simuliert Linux Inode-Nummern beim Zugriff auf ein Microsoft FAT-Dateisystem.

Damit kommen wir zum nächsten Problem: Windows verwendet keine Inodes, da typische Microsoft-Dateisysteme keine Inodes verwenden. Es ist ziemlich unklar, was der „oder äquivalente“ Wert ist. Wenn ich raten müsste, würde ich ratenUpdate-Sequenznummer (USN)aber verlassen Sie sich nicht auf mein Wort.

verwandte Informationen