日期:2014-05-16  浏览次数:20752 次

Linux下符号链接和硬链接的区别
解释1

存在两种不同类型的链接,软链接和硬链接。修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path)

软链接文件

  软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。

命令格式:

代码:

ln [-s] source_path target_path

硬链接文件

  info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是

代码:

ln -d existfile newfile

引用:

硬链接文件有两个限制

  1、不允许给目录创建硬链接;

  2、只有在同一文件系统中的文件之间才能创建链接。

  对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。修改其中一个,与其连接的文件同时被修改。

解释2

硬链接与符号链接的区别在于硬链接与原来的文件有相同的i-node即它们是无差别的指向一个存储数据的空间的索引.而符号链接可以理解为指向原来的文件的索引的索引.它与原来的文件是两个不同的文件.所以这样的话假如存在三个文件的话,a是原文件,b是a的硬链接,而c是a 的符号链接.刚不管是那个文件或者目录的内容改变都会使得其它的文件的内容改变.对于原文件的删除,则c将变的不可用,而对b却没有任何的影响.b,c的删除不会对任何文件有影响.

注:

   1. 对于ln命令默认是建立硬链接的.
   2. -s不是soft(软)的意思,而是symbolic(符号)的意思,因此应该是符号链接,而不是常说较链接,以后应该纠正.

解释3

硬链接用ln existing-file new-link 来使用。当你对同一文件有多个名称时,每个名称被称为该文件的硬链接。即对同一个i节点号有多个文件名。你用rm删除它的某一个文件名对其余的名称和文件内容不会受到影响。  

软链接是一个小的指针文件,用ln -s real-file ptr-file  

它可以对目录和其他文件系统进行操作,而硬链接就不行。一般指令会对指针指向的文件进行操作,而rm,mv指令只对软链接本身操作。    用ls -l只能看到软连接。

符号链接:软链接,指向文件 所在目录位置的指针, 删除对原始文件无影响。

硬链接:指向文件的INODE结点,增加原始文件的引用计数,引用计数为零时则删除原始文件。