熟悉Windows操作系统的用户对于它的快捷方式一定印象深刻吧?通过快捷方式,可以把本来保存在D盘等地方的文件或者目录定位到桌面,方便用户进行访问。其实在Linux系统中也有类似的功能,不过其从功能上来说要比快捷方式略胜一筹。
一、硬连接的原理。
在inode节点中存储着文件的相关属性,如权限等等。但是在这个节点中却没有存储文件的名字。这个特性给与了用户很多的想象力。如如此的话,一个文件只有一个节点,但是却可以有多个文件名字。当一个文件有多个文件名字时,在Unix系统中就叫做文件有多个连接。用户可以通过文件的任何一个连接访问这个文件。虽然他们有不同的文件名字,但是他们却是同一个文件,因为他们文件的inode号是同一个。通常情况下,只要inode节点数相同,就是同一个文件。虽然有多个文件名字,但是在硬盘上只有一个文件副本。从严格意义上来说,并不存在节点数相同的多个文件,他们只是一个文件,只是由不同的名字而已。就像一个人,其可能有多个绰号,但是这个人只有独一无二的一个。即使通过克隆等技术再生成一个人,那么他们是两个不相同的人,而不是一个人。了解这个内容对于认识硬连接与快捷方式的差异具有很大的作用。
二、硬连接与快捷方式的差异。
Unix系统中地硬连接与快捷方式有比较大的差异。简单的来说,Unix操作系统中的硬连接其实就是一个文件不同的别名而已。而微软操作系统中的快捷方式则是两个不同的问题。如下图所示:
文件doc1与文件doc2他们由于节点数是相同的,所以说他们是同一个文件。文件doc2是文件doc1的一个硬连接。即这个文件具有两个绰号,对其中的一个绰号(即链接)的修改会影响到另外一个绰号。通过ls等命令可以查询到这两个绰号代表的文件可能会存储在两个不同的目录中,但是通过查询他们的节点数却可以发现他们属于同一个文件。
但是快捷方式则不同。如上图的右边所示,文件doc2是文件doc1的一个快捷方式。其实此时他们是两个文件。文件doc1保存着文件本身的内容,而文件doc2则保存着指向文件doc1的一个路径。也就是说,这两个名字所对应的文件是不同的。或者说,这两个文件名字代表着不同的文件。当用户打开doc2文件时,系统首先打开的就是doc2这个文件。然后再从这个文件中读取文件doc1的路径,再把文件doc1打开。由于这个过程对于用户来说是透明的,故用户看起来他们好像代表着同一个文件。其实是不同的。只需要把文件doc1换一个位置,那么当打开doc2文件时系统就会提示找不到文件doc1的错误信息。从这里就可以判断出,文件doc2只保存了文件doc1的一个连接方式,而不是文件doc1本身的内容。
以上这个就是硬连接与快捷方式的主要差异。这个差异也决定了硬连接在某些场合有其独到的用处。