硬链接与软链接的区别

硬链接(hard link)ln:

  Unix文件系统提供了一种将不同文件链接到同一文件的机制,称为链接。它可以使得单一程序对同一文件使用不同名字。这样的好处是文件系统只存在一个文件的副本。系统简单的通过在目录中建立一个新的登录项来实现这种链接。该登录项具有一个新的文件名和要链接文件的inode号(inode与原文件相同)。不论一个文件有多少个硬链接,在磁盘上只有一个描述它的inode,只要该文件的连接数不为0,该文件就保持存在。硬链接不能对目录建立硬链接。

  硬链接是直接建立在节点表上的(inode),建立硬链接指向一个文件的时候,会更新节点表上面的计数值。eg,一个文件被链接了两次(ln),这个文件的计数值是3,而无论这3个文件名任何一个被访问,效果都一样,但若删除任意一个,都只是把计数值减1,不会删除实际的内容(任何存在的文件本身就是一个硬链接),只有计数值变为0时,才会真实的删除内容。

软链接(symbolic link)ln -s:

  符号链接成为软链接。它是指向另一文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接时为了为克服硬链接的不足引入的,软链接不直接使用inode号作为文件指针,而使用文件路径名作为指针(软链接:文件名+数据部分-->目标文件的路径名)。软链接有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接。二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其链接。

~若原文件删除了,该软链接无法访问,硬链接还可以。

原文地址:https://www.cnblogs.com/Uhey/p/5659668.html