一、软链接和硬链接
1.1 软链接
在Linux中,我们可能会看到这种文件:
这就是软链接,又称为符号链接(Symbolic Link)
说完了表象我们来看本质。可以看到上面的软链接好像是一个文件指向了另一个文件,而实际上也确实是这样的。软链接是一个独立的文件,有独立的inode,其数据块中存放的是指向的文件的路径。
这么一说,你可能会想到什么。没错,我们可以把软链接理解成Windows的快捷方式
要创建一个软链接也十分简单,命令为 ln -s 指向的文件路径 软链接名 ,例如:
可以看到,创建的软链接在相比于普通文件,权限位前面的字符从“-”变成了“l”, 代表软链接
并且,软链接的inode和指向文件的inode是不一样的,这也能说明软链接是一个独立的文件
前面提到,软链接内部存放的是指向文件的路径,那如果我们把指向的文件删除会发生什么呢?
删除指向的文件后软链接仍然存在,但已经是一个无效的软链接了,所以软链接与指向的文件是从属关系,指向的文件不存在了,软链接也就无效了
要删除一个软链接也很简单,命令为 unlink 软链接
软链接有什么作用呢?显而易见,我们平时使用的快捷方式有什么用,软链接就有什么用
1.2 硬链接
相比于软链接是一个独立的文件,我们在创建硬链接时不会生成一个新的文件,硬链接会与其指向的文件共用同一个inode
简单来说,硬链接就是给文件起别名,虽然文件名不同,但硬链接与指向的文件的inode是相同的,即一个inode对应两个或多个不同的文件名
创建一个硬链接的方式与软链接类似,通过命令 ln 指向的文件路径 硬链接名 即可创建硬链接:
可以看到,权限位后的数字也由1变为了2,实际上这个数字就是硬链接数,在我们创建了一个指向file.txt的硬链接后,硬链接数也增加了。因为二者的inode是一样的,所以拥有相同的硬链接数
此时我们分别打印file.txt和硬链接的内容,可以看到是一样的
此时我们删除file.txt,会发生什么呢?
可以看到,硬链接依然能够被访问,此时硬链接数重新变为1。所以硬链接和指向的文件是