Linux 中文件分为文件名和数据,而数据又分为:用户数据(user data)和元数据(metadata)。用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。

linux 中,元数据中inode号(inode 是文件元数据的一部分但其不包含文件名,inode号即索引节点)才是文件的唯一标识而非文件名。文件一旦建立,inode号就确定,即便改了文件名 和位置,也不会影响inode号。

通过命令ls -i 可以查看文件的inode号

为解决文件的共享使用,Linux系统引入了两种链接:硬链接(hard link)与软链接(又名符号链接,soft link or symbolic link)。

链接为Linux系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个inode号对应多个文件名,则称为硬链接。换言之,硬链接就是同一个文件使用多个别名。

硬链接创建命令:link oldfile newfile/ln oldfile newfile

硬链接的特性:1 文件有相同的inode及data block、2只能对已存在的文件进行创建、3不能对目录进行创建,只可对文件创建、4 删除一个硬链接文件并不影响其他相同的inode号的文件、5不能交叉文件系统(例如:ln /root/123.py /dev/456.py)

硬链接相当于一个备灾系统,数据存放两处,与复制不同的时两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外一处数据如果被删除了,不会影响到另外一处的数据。只要连接数不为0,硬链接就一直存在,如果为0,系统会收回。

软连接的特性:1 软链接有自己的文件属性和权限等、2可对不存在的文件或目录创建软连接、3 软连接可交叉文件系统、4软链接可对文件或目录创建、5 创建软连接时,链接计数i_nlink不会增加、6 删除软连接并不影响被指向的文件,但若被指向的源文件被删除,则相关的软连接被称为死链接(即dang link,若被指向路径文件被重新创建,死链接可恢复为正常的软连接)

注意:软连接创建时源文件的路径指向使用绝对路径比较好,使用相对路径创建的软连接被移动后,该软连接文件将称为一个死链接。

软连接的创建命令:ln -s 源文件 目标文件

软连接相当于windows中的快捷方式。