Fli*_*imm 17 filesystems inode
如果我运行这样的命令:
find / -inum 12582925
Run Code Online (Sandbox Code Playgroud)
这是否有可能在不同的挂载文件系统(来自不同的分区)上列出两个碰巧分配了相同编号的文件?inode 编号在单个文件系统上还是在所有已挂载的文件系统中是唯一的?
Ste*_*itt 40
inode 编号仅在单个文件系统上是唯一的。您很快就会遇到的一个示例是 ext2/3/4 文件系统上的根 inode,它是 2:
$ ls -id / /home
2 / 2 /home
Run Code Online (Sandbox Code Playgroud)
如果你运行(假设 GNU find)
find / -printf "%i %p\n" | sort -n | less
Run Code Online (Sandbox Code Playgroud)
在具有多个文件系统的系统上,您会看到许多重复的 inode 编号(尽管您需要在输出中加一点盐,因为它也将包含硬链接)。
当您按 inode 编号查找文件时,如果您只有一个起始路径,则可以使用find's-xdev选项将其搜索限制为包含起始路径的文件系统:
find / -xdev -inum 12582925
Run Code Online (Sandbox Code Playgroud)
只会在根文件系统上找到 inode 编号为 12582925 的文件。(-xdev也适用于多个起始路径,但在这种特殊情况下它的用处会降低。)
它的节点号码和设备号码的组合(st_dev和st_ino在stat结构中,%D %i在GNUfind的-printf),其识别一个文件唯一地(在给定的系统上)。如果两个目录条目具有相同的 inode 和 dev 编号,则它们引用同一个文件(尽管可能通过同一文件系统的两个不同挂载进行绑定挂载)。
一些find实现还有一个-samefile谓词,可以找到具有相同设备和 inode 编号的文件。大多数[/test实现也有一个-ef运算符来检查两个文件路径是否指向同一个文件(尽管在符号链接解析之后)。
| 归档时间: |
|
| 查看次数: |
4438 次 |
| 最近记录: |