1. 硬链接
当文件夹增加一个文件的条目时,就会创建一个指向文件的硬链接(Hard Link)。一旦有了对应文件的硬链接,这个文件就纳入了文件夹系统中。
- 一个文件允许多个硬链接,即允许出现在多了目录中。
- 文件拥有的硬链接数量,成为文件在整个系统总的链接数(Link Count)。
- 当文件的链接数为0时,说明文件已经被孤立于文件系统之外。这样会被系统自动删除。
1.1 删除硬链接
大多数情况下,一个文件只存在于一个目录之下,所以链接数为1。在这种情况下,一旦删除该文件的条目,也就是删除了一个硬链接,那么文件就会被删除。删除软连接的命令为unlink。
$ unlink test.txt # 删除test.txt的硬链接
test.txt的条目将从目录中删除,文件的链接数将为0。在这种情况下,unlink效果等同于删除文件。
1.2 创建硬链接
使用ln命令来创建硬链接:
$ ln test.txt /home/user/another.txt # 在 /home/user/目录下创建test.txt的硬链接为another.txt
创建完成后,在/home/user/会出现another.txt文件。实际上another.txt和test.txt属于同一个文件。当改动其中一个,另一个也会改动。
当我们删除硬链接
$ unlink /home/user/another.txt # 删除刚刚创建的硬链接
删除上述链接后,还可以通过test.txt找到该文件。实际上,Linux系统中rm命令和unlink命令相同。
2. 软连接
同一个文件的多个硬链接会破坏树状的文件系统。因此,在使用过程中,多使用软连接(Soft Link)的方式,在多个目录下创建指向同一个文件的链接。
软链接不影响文件的链接数。软连接实际上是一个文件,包含链接指向文件的绝对路径。与Windows系统的“快捷方式”类似,Linux的软连接就是Linux的“快捷方式”。
1.1 创建软连接
使用ln命令加上-s选项来创建软连接:
$ ln -s test.txt /home/user/another.txt # 创建一个软连接
/home/user/another.txt是一个软连接文件。可以使用file命令来获取其文件类型:
$ file /home/user/another.txt # 查看软连接的文件类型
结果为:
$ another.txt: symbolic link to test.txt
和硬链接不同的是,软连接既不影响文件的链接数,又不会破坏文件系统的树状结构,因此软连接在Linux中更加广泛。
1.2删除软连接
同样使用unlink命令
$ unlink /home/user/another.txt # 使用unlink删除创建的软连接