
我正在使用一個名為 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 檔案是具有四個欄位的文字檔案:
索引節點號(或等效值)。文件系統(或同等設備)的主設備號。文件系統(或同等設備)的次設備號碼。文件內的當前位元組偏移量。
在 Linux 上,我可以使用以下命令將 inode 轉換為檔案名稱:
find /path/to/mountpoint -inum <inode number>
或者
debugfs -R 'ncheck <inode number>' /dev/sda2 2>/dev/null
Windows 中相當於執行此操作的是什麼?如何將 Windows 檔案句柄/檔案描述符轉換為檔案和目錄名稱?
答案1
檔案描述符和檔案句柄是短暫的:它們僅在程式運行時存在,並且可以重複使用。在日誌檔案中查找它們是毫無意義的。
Linux 索引節點是不是文件描述符。它們是常見檔案系統(例如 Ext2 和 Ext3)中磁碟檔案系統結構的一部分。由於它們對 Linux 非常重要,因此 Linux 在存取 Microsoft FAT 檔案系統時將模擬 inode 編號。
這就引出了下一個問題:Windows 不使用 inode,因為典型的 Microsoft 檔案系統不使用 inode。目前還不清楚「或等效」值是什麼。如果我必須猜測的話,我會猜測更新序號(USN)但不要相信我的話。