1. 硬链接:ln
原文件与链接文件的inode号一致。
一旦一个硬链接创建成功,其与原来的文件是同等地位的,对其中任意一个硬链接的读写操作或者元数据的修改都会影响到指向同一inode的其他硬链接。对于删除操作,只有当所有指向这个inode的全部硬链接都被删除之后,这个inode及其数据才会被删除。
nlink:表示有多少个目录项指向了这个inode,当inode链接数为0时,inode及其索引的结构和数据才可以被销毁。
tips:目录文件的链接数:
由于目录文件中保存了“ . ”(当前目录)和“ .. ”(上级父目录)两个目录项,当一个新的目录文件被创建时,其本身的链接数为2(自身目录名+ “ . ”),同时其父目录的链接数加1 (“ .. ”)。
2. 符号链接: ln -s
原文件和链接文件的inode号不一致。
链接文件的内容存储的是原文件的路径。读取链接文件时,系统会自动将访问导向原文件。因此,无论打开哪一个文件,最终读取的都是原文件。
这意味着,链接文件依赖于原文件而存在,如果删除了原文件,打开链接就会报错:"No such file or directory"。
符号链接文件指向原文件的文件名,而不是原文件的inode号码,原文件的inode"链接数"不会因此发生变化。
参考:
1. 理解inode:https://www.ruanyifeng.com/blog/2011/12/inode.html
2. 现代操作系统:原理与实现