通过索引节点号打开文件

通过索引节点号打开文件

有什么方法可以准确找到分配给 inode 的块并查看该文件吗?我不在乎我是否必须在现场 CD 上,但我需要这样做,例如:

cat verylongsentice > a
ls -i a
101010 a
ln a /some/random/path
rm a
inode_find 101010
verylongsentice

有什么办法可以做到这一点吗?也许是 root 或来自 live CD?我不关心文件名。删除的文件也可以这样做吗?

答案1

已删除的文件没有索引节点号。另外:不保证索引节点号是不可变的,或者不会立即重用。

在您的问题下面的评论中,您非常坚持认为您想要的应该有效。它不应该:

直接通过 inode nr 而不是通过文件名打开文件与 POSIX 文件的工作原理直接冲突。它还与 POSIX 权限模型不兼容,在该模型中,访问文件的路径决定了您是否可以访问它。

因此,Linux 内核无法为您提供通过 inode 打开文件的 API。

如果该文件仍然存在,并且您的文件系统实际上存储了 inode(我猜大多数文件系统不存储实际的 inode 号,因为这是组织大型文件系统的糟糕方法,但可能是 1970 年代的残余。文件系统驱动程序会从目录树结构中的位置(也许是其他东西)计算 inode nr,您可以进入并使用find /mountpoint -i {number}在整个文件系统上查找该 inode 编号的文件。如果它已经被删除了,它就不再存在了,你也就找不到它了。

相关内容