Linux系统中包括两种链接方式:硬链接(hard link)和符号链接(symbolic link),其中符合链接就是所谓的软链接(soft link),那么两者之间到底有什么区别呢?
inode
在Linux系统中,内核为每一个新创建的文件分配一个inode,每个文件都有一个惟一的inode,这里将inode简单理解成一个指针,它永远指向本文件的具体存储位置同时,文件属性保存在inode里,比如owner等。在访问文件时,inode被复制到内存,从而实现文件的快速访问。系统是通过inode来定位每一个文件。
hard link
hard lin可以理解是一个指针,它指向源文件的inode,并不会产生新的inode。hard link不管有多少个,都指向的是同一个inode节点,只是新建一个hard link会把结点连接数增加,只要结点的连接数不是0,文件就一直存在,不管你删除的是源文件还是连接的文件。只要有一个存在,文件就存在(其实就是引用counter的概念)。当你修改源文件或者连接文件任何一个的时候,其他的文件都会做同步的修改。可见下图的示例。
symbolic link
symbolic link拥有独立的inode,是一个独立的文件,而文件的内容是源文件的路径指针,因此可以通过symbolic访问到源文件,因此删除符号链接对源文件没有影响,但是删除了源文件,符号链接文件就无法找到指向的文件。这里可以想象成Windows中的快捷方式。
对比
1. 符号链接和源文件操作权限不一样;硬链接与源文件操作权限完全一致。
2. 符号链接可以跨文件系统(分区);由于inode的限制以及文件系统的可卸载性,硬链接不容许跨文件系统。
3. 符号链接可以对一个不存在的文件名进行链接;硬链接不可以。
4. 符号链接可以对目录进行连接;硬链接不可以。
原文:http://www.cnblogs.com/jingyzzz/p/6241139.html