__如何理解软链接与硬链接

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
tianping
帖子: 278
注册时间: 2007-08-26 15:57

__如何理解软链接与硬链接

#1

帖子 tianping » 2007-12-29 11:12

从不同的地方摘了一些关于硬链接和软链接的描述,附后与大家共享。
我对软链接、硬链接和inode一直有些疑惑,现将我的理解列举如下,若有错请指正。谢!

1.系统对文件数据的定位最终都是通过inode进行的。原始文件保存有inode信息;硬链接也有inode信息;软链接通过其链接的对象确定目标文件的inode信息。
2.软链接相当于windows下的快捷方式,而windows下没有与硬链接对应的查找文件的方式。
3.如果一个1GB的文件有多个硬链接,删除一个硬链接并不能节省1GB磁盘空间,因为数据在磁盘上根本没有被清除。不同的硬链接相当于为磁盘上某个区域的数据命了不同的名。
4.创建了一个文件后,为它在磁盘上分配存储空间;如果再为原始文件创建硬链接,那么其实就无所谓谁是原始文件了,因为他们指向同一存储区域。
5.inode相当于fat分区表,相当于一本书的目录。
========摘录========================
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。

只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在不同文件系统的文件间建立链接(2)只有超级用户才可以为目录创建硬链接。

硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了。
建立软链接就是建立了一个新文件。

当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。

硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。

如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

符号链接是一个指针,指向文件在文件系统中的位置。

硬连接记录的是目标的 inode,符号连接记录的是目标的 path。

软连接就像是快捷方式,而硬连接就像是备份!

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

如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。
头像
hecha
帖子: 364
注册时间: 2007-09-23 13:36

#2

帖子 hecha » 2007-12-29 16:56

好, 再加上 怎么创建 硬链接 和 软链接 就更全 更好 了。
头像
changer
帖子: 25
注册时间: 2006-04-01 11:01
来自: 沈阳

#3

帖子 changer » 2007-12-29 18:48

学习了。。。。
有很多事情没法解释,也不需要解释。
回复