有没有办法准确找到分配给 inode 的块,并查看该文件?我不在乎我是否必须在现场 CD 上,但我需要这样做,例如:
cat verylongsentice > a
ls -i a
101010 a
ln a /some/random/path
rm a
inode_find 101010
verylongsentice
有什么办法吗?也许作为 root 或从 live CD?我不关心文件名。删除的文件也可以吗?
有没有办法准确找到分配给 inode 的块,并查看该文件?我不在乎我是否必须在现场 CD 上,但我需要这样做,例如:
cat verylongsentice > a
ls -i a
101010 a
ln a /some/random/path
rm a
inode_find 101010
verylongsentice
有什么办法吗?也许作为 root 或从 live CD?我不关心文件名。删除的文件也可以吗?
删除的文件没有索引节点号。另外:不能保证索引节点号是不可变的,或者不能立即重用。
在您的问题下方的评论中,您非常坚持认为您想要的应该有效。它不应该:
直接通过 inode nr 而不是通过文件名打开文件与 POSIX 文件的工作方式直接冲突。它还与 POSIX 权限模型不兼容,在该模型中,您访问文件的路径决定了您是否可以访问它。
因此,Linux 内核无法为您提供通过 inode 打开文件的 API。
如果文件仍然存在,并且您的文件系统实际上存储了索引节点(我猜大多数文件系统不存储实际的索引节点编号,因为这是组织大型文件系统的糟糕方式,但可能是 1970 年代的残余。文件系统驱动程序将从目录树结构中的位置计算 inode nr,也许,或者其他),你可以进去,并使用它
find /mountpoint -i {number}
在整个文件系统上查找具有该 inode 编号的文件。如果它已经被删除了,它就不再存在了,你也就找不到它了。