软链接和硬链接

  对于linux中的文件来说,每个文件都有一个唯一的文件描述符来标识文件,对于一个文件而言,可以创建硬链接也可以创建软链接。

硬链接

  对于系统而言,每个文件都是唯一的,具有唯一的文件描述符,系统允许不同的文件名绑定到同一个文件上,这就是硬链接,也成为物理链接。创建文件时,系统会自动为文件分配文件描述符,同时创建一个硬链接。可以使用ln命令为文件创建其他的硬链接,该硬链接和原始文件具有相同的文件描述符,使用一个文件的任意硬链接都可以访问该文件,因为这个文件的文件描述符是一样的。因为一个文件可以有多个硬链接,所以只有当该文件不再有任何硬链接绑定的时候才会被删除,即链接数变为0时。

软链接

  软链接本身是一个独立的文件,只不过这个文件是一个快捷方式,指向了另外一个文件,类似于windows的快捷方式。因此,当创建了某个文件的软链接时,这个软链接文件自身也会有一个新的文件描述符。可以通过软链接访问到原始的文件。但是删除软链接,只会影响到软链接本身,指向的原始文件不会受到影响,因为两者具有不同的文件描述符,即不是同一个文件。

演示说明

  这里创建一个名为readme的文件,然后再此文件的基础上进行演示。

ls命令显示含义

  linux可以通过ls命令显示一个目录中的文件,通过指定命令选项,可以显示更加丰富的信息。以下是使用了ls -ahli之后显示的信息含义:

创建硬链接

  通过以下命令创建硬链接:

ln readme readme_hardLink

  查看文件信息,可以发现硬链接和原始文件具有相同的文件描述符。初始创建文件时,readme文件的链接数为1,而创建了硬链接以后,该文件的链接数变为2,如下所示:

创建软链接

  通过以下命令创建软链接:

ln -s readme readme_softLink

  查看文件信息,可以发现硬链接和软链接的文件描述符不同,说明软链接是一个全新独立的文件。显然,软链接创建后原始文件的链接数并没有改变,而且作为一个新建的软链接文件,软链接的自身的链接数也是1,如下所示:


当珍惜每一片时光~