linux的ln指令详解~多图,易理解(硬链接和软链接)

最近看到linux的ln指令,之前接触过很多次,理解完了总是忘记,查的资料竟然各种文字,太不容易理解,所以就想着把它们整理出来,以供理解~


1.ln命令格式:


ln [参数][源文件或目录][目标文件或目录]

ln  [源文件或目录][目标文件或目录] ~~~~~~~硬链接

ln -s [源文件或目录][目标文件或目录] ~~~~~软链接


2.命令功能:

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link)。

在这里我们解释一下目录项(dentry)的概念。每一个文件一般表示就是使用目录项,每个目录项包含着该文件的名字,该文件指向的inode节点标号,linux把目录和文件都用目录项表示。

硬链接:硬链接可以认为是一个指针,指向原文件inode的指针,系统不为它重新分配inode和创建文件,即硬链接和原文件是同一个文件。其新建一个目录项,指向被链接的inode节点,一个inode节点可以指向多个目录项。

软链接:它是指向另一个文件的特殊文件,这种文件的数据部分仅仅包含了它所要连接文件的路径名。软链接同样也是新建一个目录项,指向一个新的inode节点,但这个inode节点的文件数据指针指向所引用文件的真实地址。

硬链接和软链接的具体含义如下图所示:

我们使用如下指令,将ppp.h文件硬链接到原文件proc.h

ln proc.h ppp.h

原proc.h文件的inode节点是516134,指向数据区的第一个file文件。使用了ln指令之后,在directory中新建一个目录项,文件名为ppp.h,inode节点仍为516134,直接指向同一个proc.h。

linux的ln指令详解~多图,易理解(硬链接和软链接)_第1张图片

我们在linux系统上进行实验,验证我们的解释是正确的,两个文件的inode节点相同,指向同一file:


我们使用如下指令,将ppp.h文件软链接到原文件proc.h

ln -s proc.h ppp.h

linux的ln指令详解~多图,易理解(硬链接和软链接)_第2张图片


我们在linux系统上进行实验,验证我们的解释是正确的,两个文件的inode节点不同,文件的大小也不同,proc.h的内容为真实的数据,而ppt.h的内容为指向proc.h的数据指针~:



不管是软链接还是硬链接,对于链接文件的修改都会改动到原文件。

你可能感兴趣的:(文件系统)