在明白软链接与硬链接之前首先要明白一些基本概念。
文件:文件名+数据
linux中文件被分为两部分:用户数据、元数据。
用户数据:文件数据块,数据块是记录数据真实存放的地方。
元数据:保存文件的附加属性(inode节点号就存放于元数据中)inode才是文件的唯一标示而不是文件名,文件名只是为了方便记忆。
索引节点(inode):Linux文件系统中,保存在磁盘上的文件不管事什么类型的,系统都会给他分配一个inode节点号,称为索引节点,硬链接即通过索引节点来进行链接。
索引节点(inode)只有在同一文件系统中才是唯一的,当linux系统挂载多个文件系统时,会有相同索引节点的情况出现,因此硬链接创建时不能跨文件系统。
硬链接:所有的链接都指向同一个索引节点。ln f1 f2
软链接:单独创建一个索引节点。ln -s f1 f2 。
软连接:软连接的索引节点是单独分配的,且该节点的数据块中存放的是链接的文件的路径名指向。因此软链接也是一中普通的文件只是内容有点特殊存放的是另一个文件的路径。
注:软连接时路径指向用绝对路径较好,以防链接移动之后不能作用成为死链接。
自我理解这里为什么用链接,和C中的链表有点相识,硬链接相当于是许多的指向同一个内存地址的指针,而软链接则是一个双重指针指向一个指向内存地址的指针的。