Linux 硬链接
硬连接
- 目录表由目录项构成,目录项是一个“
文件名-i节点号
”对 - 根据文件系统的存储结构,可以在同一目录或者不同目录中的两个目录项,有相同的i节点号
- 每个目录项指定的“
文件名-i节点号
”映射关系,叫做1个硬连接 - 硬连接数目(link数):同一i节点被目录项引用的次数
ln: 普通文件的硬连接
创建一个文件的硬链接:
1 | [root@localhost Linux命令风格;文件系统]# ls |
查看文件以及文件的硬链接的详细信息:
1 | [root@localhost Linux命令风格;文件系统]# ls -l |
可以发现useEnv.c和useEnvC的前几项都完全相同。而useEnv.c和useEnvC的link数都是2.
查看文件的i节点:
1 | [root@localhost Linux命令风格;文件系统]# ls -i |
可以发现文件useEnv.c和useEnvC的i节点都相同。
useEnv.c与useEnvC同时存在时,地位完全平等,硬链接创建完毕后,就无法知道哪个文件是先创建的,哪个文件是后创建的。
删除useEnv.c文件,
1 | [root@localhost Linux命令风格;文件系统]# rm useEnv.c |
可以发现则useEnvC仍存在但link数减1。
只有一个文件的link数减到0时,该文件的磁盘空间才会被清理掉。
硬连接,只限于同一文件系统中的普通文件
目录表的硬连接
不允许对目录用ln命令建立硬连接
一般来说,目录的link数=直属子目录数+2
目录表的硬连接示意图:
硬链接的作用
可以对同一个文件起不同的文件名
一个文件位于另一个个文件系统中,不同的文件系统的i节点不能通用。
也就是硬链接不能跨越文件系统。