Linux中的硬链接和软链接
硬链接和软链接都是linux中对文件方便操作的一种技术,硬链接简单来说就像是对文件器别名,文件的每一个别名都相当于一个硬链接,只有删除所有的硬链接后文件才会被删除。软链接也被称为符号连接,它本质是就是一个文件,当把源文件删除的时候,软链接在使用中就会出错,这有点类似指针,一个变量可以有多个指针指向它,当变量被释放的时候,指针就变成野指针。要深入了解硬链接和软链接需要对linux的文件系统种的iNode有个认识。
iNode:
文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。图 1.展示了程序通过文件名获取文件内容的过程。
文件分目录文件和档案文件,目录文件是记载目录下的文件名,档案文件是记录文件实际内容的地方。所以硬链接就是在目录文件中增加一个目录项,这个目录项包含了文件的别名,并且它指向了相同的iNode。
硬链接:
从上面介绍的可以知道硬链接的特点是:
<1>文件有相同的 inode 及 data block;
<2>只能对已存在的文件进行创建;
<3>不能交叉文件系统进行硬链接的创建;
<4>不能对目录进行创建,只可对文件创建;
<5>删除一个硬链接文件并不影响其他有相同 inode 号的文件。
软链接:
从这里可以看出软链接就是一个独立的文件,文件大小跟源文件没有直接的对应关系,它就像一个指针指向了源文件。所以软链接不存在硬链接中的问题。
软硬链接的创建方法:
ln file hardLink; //硬链接
ln –s item sysLink; //符号链接