我正在使用一款名为 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 inode 是不是文件描述符。它们是常见文件系统(例如 Ext2 和 Ext3)中磁盘文件系统结构的一部分。由于它们对 Linux 非常重要,因此 Linux 将在访问 Microsoft FAT 文件系统时模拟 inode 编号。
这引出了下一个问题:Windows 不使用 inode,因为典型的 Microsoft 文件系统不使用 inode。“或等效”值是什么还不太清楚。如果要我猜的话,我会猜更新序列号(USN)但请不要相信我的话。