软链接和硬链接
大约 2 分钟
软链接和硬链接
有时候我们希望给某个文件取个别名,那么在 Linux 中可以通过 硬链接(Hard Link) 和 软链接(Symbolic Link) 的方式来实现,它们都是比较特殊的文件,但是实现方式也是不相同的。
总结
- 硬链接
- 多个目录项、同一个文件(同一个inode)
- 是否跨文件系统:否
- 删除:删除对应文件的所有硬链接以及源文件时,系统才会彻底删除该文件
- 软链接
- 多个文件(多个inode)
- 是否跨文件系统:是
- 删除:删除目标文件时,链接文件依然存在但指向目标丢失
硬链接
硬链接是多个目录项中的「索引节点」指向一个文件,也就是指向同一个 inode,但是 inode 是不可能跨越文件系统的,每个文件系统都有各自的 inode 数据结构和列表,所以 硬链接是不可用于跨文件系统的。由于多个目录项都是指向一个 inode,那么只有删除文件的所有硬链接以及源文件时,系统才会彻底删除该文件。
软链接
软链接相当于重新创建一个文件,这个文件有独立的 inode,但是这个文件的内容是另外一个文件的路径,所以访问软链接的时候,实际上相当于访问到了另外一个文件,所以软链接是可以跨文件系统的,甚至目标文件被删除了,链接文件还是在的,只不过指向的文件找不到了而已。
链接到当前文件 0
没有文件链接到当前文件