Windows: ファイル ハンドルのファイル名を見つけるにはどうすればよいでしょうか?

Windows: ファイル ハンドルのファイル名を見つけるにはどうすればよいでしょうか?

私は、ログ ファイルを処理し、進行状況を次のようなファイルに保存する 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 ファイルは 4 つの列を持つテキスト ファイルです。

inode 番号 (または同等のもの)。ファイル システムのメジャー デバイス番号 (または同等のもの)。ファイル システムのマイナー デバイス番号 (または同等のもの)。ファイル内の現在のバイト オフセット。

Linux では、次のコマンドを使用して inode をファイル名に変換できます。

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

または

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

これを行う Windows の同等の機能は何ですか?Windows のファイルハンドル/ファイル記述子をファイル名とディレクトリ名に変換するにはどうすればよいですか?

答え1

ファイル記述子とファイル ハンドルは一時的なものです。つまり、プログラムの実行中にのみ存在し、再利用できます。ログ ファイルでそれらを見つけることはほとんど意味がありません。

Linuxのinodeはないファイル記述子。Ext2 や Ext3 などの一般的なファイル システムのディスク上のファイル システム構造の一部です。Linux にとって非常に重要なため、Linux は Microsoft FAT ファイル システムにアクセスするときに inode 番号をシミュレートします。

それで次の問題が出てきます。Windowsはinodeを使用しません。なぜなら、典型的なMicrosoftのファイルシステムはinodeを使用しないからです。「または同等」の値が何なのかは、かなり不明瞭です。推測するなら、更新シーケンス番号(USN)しかし、私の言うことを鵜呑みにしないでください。

関連情報