硬连接(hard link)
硬连接是通过文件系统的inode连接来产生新文件名,而不是产生新文件
如为filename创建一个硬连接文件filename_hardlink:
如上图,因为硬连接产生不同的文件名都指向相同的inode,所以修改任意一方的属性或block数据,其他文件访问到的数据也联动改变了
x先做一个硬连接的测试:
先创建一个新文件:
再创建该文件的一个硬连接:
(可能因为缓存的原因,所以总量和inode的使用量和上图有出入)
我们可以看到硬连接创建的本质就是在file-inode映射表多了一条数据,并且使文件连接数加1,而实际并不产生新的inode和block。
这样的话,rm
操作删除文件,无非也就是移除file-inode映射表里面的内容,即把文件的连接数减1,而实际的文件数据依然存在,只有当文件的连接数减到0,实际的文件数据才会被删除。
但是硬连接有两个局限:
1.不能跨文件系统
2.不能对目录创建硬连接
关于连接数的拓展:
当新建一个目录时,新目录的连接数为2,上一层的目录连接数会增加1。
因为新目录创建会产生.
和..
两个文件,而
/newDir
和/newDir/.
指向的是同一个inode
/newDir/..
和/
也指向的是同一个inode
软连接(symbolic link或叫符号连接)
软连接类似windows系统的快捷方式功能的文件,可以快速连接到目标文件或目录
symbolic link与hard link 不同,symbolic link会创建一个独立的文件,即会产生新的inode和block,而该block的数据指向原文件的文件名
具体如下图:
所以当原文件删除之后,symbolic link文件打不开,其实就是symbolic link文件的block指向源文件的连接断了(或者说找不到源文件名)
关于symbolic link的操作测试: