有关硬/软链接的信息存储在哪里?

Mik*_*ike 5 filesystems hard-link symlink inode files

*nix 系统在哪里存储有关特定 inode 的硬链接数量的信息?我找不到任何相关信息。硬链接无处不在,但很少有涉及 inode 相关内容的高级信息。

inode 存储有关链接数量的信息,但它从哪里获取?我可以通过只知道 inode 编号来定位所有链接(硬链接和软链接)吗?

Gil*_*il' 5

硬链接计数存储在 inode 中。文件创建时从1开始,每次link系统调用成功加1,每次系统调用成功减1 unlink

找到指向同一个文件的所有硬链接的唯一方法,即找到通向给定 inode 的所有路径名,是遍历整个文件系统并比较 inode 编号。inode 不指向目录条目。

目录是一个特例:它们的硬链接遵循严格的规则。(某些 unix 变体允许 root 以管理员的危险绕过这些规则。)到目录的硬链接是它的.条目、它的子..条目和它的父目录中的一个条目(父目录是目录..条目到达的目录)。

无法找到指向文件的所有符号链接。它们可以在任何地方,包括在未挂载的文件系统上。

随着GNU或FreeBSD的发现,你可以用find /some/dir -samefile /path/to/foo查找所有的硬链接文件/path/to/foo是下/some/dir。使用该-L选项,您可以找到该文件的所有软链接和硬链接。您可以使用-inum谓词而不是-samefile.