
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.