硬连接和符号连接有什么区别?

硬连接和符号连接有什么区别?

这个问题也不知道得贴到哪个版上?

有没有谁能讲一下他们的区别?

谢谢!      
删除硬连接,会把真正的也删除。符号不会。记得在哪里看过,不是很记得了,自己看看MAN文档,做几个试验不就行了。      
每个文件都是用inode(Information Node)来表示的,inode含有文件的全部信息,但我们不能直接访问inode。每个inode通过一个或几个硬连接跟文件系统关联,所以我们才能通过文件系统访问数据。硬连接包含文件名和inode number。而inode就是文件本身的位置、访问权限、文件类型等。只要有inode number,系统就能把它找到。

一个文件可以有不止一个硬连接,也就是说不同的文件名可以指向同一个文件。但不能存在跨越文件系统的硬连接:所有对同一inode的直接引用必需在同一文件系统上,如果对某一个文件建立硬连接(就是对这个inode再建一个硬连接),你删除这个文件的时候,其实只是删除了其中一个硬连接,还可以通过其他硬连接访问,直到你删掉了所有硬连接,系统才会删除该inode。

而符号连接或者叫软连接,是一种特殊文件,它指向已加载的文件系统的一个硬连接。符号连接可以跨越文件系统。

总的说来,硬连接是一个文件名和一个inode number;文件是一个inode;符号连接是一个inode,内容包括一个硬连接的名字。符号连接建立文件名到另一个文件名的对应关系;而硬连接建立文件名到inode的对应关系。

对符号连接的操作有时候会影响这个符号连接自己的inode(含有硬连接名字的那个inode)信息,有时候会影响它指向的那个硬连接的内容。

目录可以建立符号连接,但不能建立硬连接。每个目录在它的父目录中都有硬连接,用.表示,在它的所有子目录中都有它的硬连接,用..表示,但不允许有其它到目录的硬连接存在。

你只能向一个存在的文件建立硬连接,因为它必需指向一个有效的inode number,但可以建立指向任何文件名的符号连接,不论这个文件是否存在。      
为什么我记得INODES的数据结构似乎是Index Nodes的缩写呢?不过GNIUX介绍的很详细。不妨做下列示范:
有文件/root/my.txt
现在做下面的操作
[localhost]#ls -il a.txt
244 -rw......
[localhost]#ln -s /root/my.txt a.txt
[localhost]#ln /root/my.txt b.txt
[localhost]#ls -il a.txt
3306 -rw....
[localhost]#ls -il b.txt
244 -rw..
看到硬连接和原文件共用同一个INODE,而软连接则创建一个新的接点号。      
[QUOTE]最初由 mountman 发布
[B]为什么我记得INODES的数据结构似乎是Index Nodes的缩写呢?[/B][/QUOTE]

有的文献也解作index node,其实真正的起源已经很难考证了,从我知道起,它就叫i-node用information node只是因为采用这种解释的更多一些,可以参考:
http://docsrv.caldera.com:1997/FS_manager/fsC.howmaint.html
http://qdn.qnx.com/support/docs/ ... chnotes/qnx4fs.html
http://www.linux-mag.com/1999-08/compile_01.html      
为什么我投了你一票,你还是只有167票?      
我发现如果点一个叫什么"花月"的个人主页,就会投它一票。      
我觉得蠢花求月在搞鬼,大家以后多投GNIUX的票      
faint~~~那个东东真的很重要吗?
谁爱要票票我大把大把送反正又不能兑换RMB~~~      
[QUOTE]最初由 Ginux 发布
[B]faint~~~那个东东真的很重要吗?
谁爱要票票我大把大把送反正又不能兑换RMB~~~ [/B][/QUOTE]
哈哈,把你的100张票转送我吧,嘻嘻!!