我们都知道文件都有文件名和数据,这在Liunx中被分为两部分:用户数据与元数据。用户数据即文件数据块,数据块是记录文件的真实内容的地方;而元数据则是文件的附加属性,如文件大小,创建的时间,所有者等信息。在Liunx中,元数据的inode号(inode是文件元数据的一部分但并不包含文件名,inode号即索引节点号)才是文件的唯一表示而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块.
软链接可以看作Windows中的快捷方式,可以让你快速的链接到目标档案或目录。
硬链接则透过文件系统的inode来产生新的档案名,而不是产生新档案。
创建方法:
1.软链接(符号链接) ln -s source target
2.硬链接(实体链接) ln source target
目录文件与档案文件
目录文件:记录该目录下的文件名
档案文件:记录实际文件数据
inode本身并不记录文件名,文件名记录在目录文件的block当中,所以新增,删除,更改文件名与目录的w权限有关,因此当我们要读取某个档案时,就务必经过目录的inode和block,然后才能够找到档案的inode号,最终才能读到正确的档案block内的数据,系统是通过索引节点(而不是文件名)来定位每一个文件的。
目录inode(满足权限?) => 目录block => 档案inode(满足权限?) => 档案block
硬链接和软连接的区别
1.硬链接源文件/连接文件公用一个inode号,说明他们是一个文件,而软连接源文件/链接文件拥有不同的inode号,表明他们是两个不同的文件。
2.在文件属性上软链接明确的写出了是连接文件,而硬链接没有写出来,因为本质上硬链接和原文件是平等关系。
3.链接的数目是不一样的,软连接的数目不会增加
4.文件大小是不一样的,硬链接文件显示的文件大小和源文件大小一样。而这里链接显示的大小与源文件就不同了。
5.软链接没有任何文件的系统限制,任何用户可以创建指向目录的符号连接。
总之,建立软连接就是建立一个新文件。当访问连接文件时,系统就会发现它是一个连接文件,它读取连接文件找到真正要访问的文件。