如何创建和查看软链接和硬链接?这二者的区别是什么?

  • 索引节点(inode)
  • 硬链接
    • 创建硬链接
    • 查看硬链接
  • 软链接
    • 创建软链接
    • 查看软链接
  • inode编号妙用
  • 总结软链接和硬链接的区别
  • 感谢

hello大家好

在linux中,文件链接可以使多个文件名引用同一个文件。有两种方式可以创建指向同一个文件的多个名称,分别是硬链接和软链接(符号链接)

在介绍软链接和硬链接前,我们先看下什么是inode

索引节点(inode)

索引节点是 Linux 文件系统中的秘密工作者,它们存储文件或目录的元数据,存储了有关文件的各种信息,如权限、所有者、文件大小、时间戳等。每个文件都对应一个唯一的索引节点,这个节点在文件系统中有一个唯一的索引号(inode number)。索引节点可以被看作是文件的“管理者”,它记录了文件的所有关键信息,而文件名则只是指向这个索引节点的一种方式

索引节点里记录的关键内容示例:

  • 权限与所有权: 索引节点记录了文件的权限和所有者信息。
  • 文件类型与大小: 索引节点指示文件类型(普通文件、目录等)以及文件的大小。
  • 链接计数: 索引节点维护一个链接计数,表示有多少个文件名指向它。当链接计数为零时,文件将被删除。
  • 数据块指针: 索引节点包含指向实际数据块的指针,以便访问文件的实际内容

我们可以使用 stat命令查看某个文件的inode信息。

示例:
如何创建和查看软链接和硬链接?这二者的区别是什么?_第1张图片

硬链接

一般情况下,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。

这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为硬链接(hard link)。

创建硬链接

我们可以使用ln命令创建一个指向现有文件的新硬链接(另一个名称)。该命令至少需要两个参数,即现有文件的路径以及要创建的硬链接的路径。

例如,以下命令为现有文件file.txt创建硬链接file-hlink.txt:

ln file.txt /tmp/file-hlink.txt

查看硬链接

我们可以通过ls -l 命令来确定某个文件的硬链接数。

例如,下面所示图中绿色框里的数字代表着对应文件的硬链接数。
如何创建和查看软链接和硬链接?这二者的区别是什么?_第2张图片

软链接

另一种链接方式是这样的,文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的软链接(soft link)或者符号链接(symbolic link)

所以软链接就是新创建了一个新文件,若原文件删了,那么软链接就失效了,而硬链接不会。

这是软链接与硬链接最大的不同:链接文件指向原文件的文件名,而不是原文件的inode号码,原文件的inode链接数不会因此发生变化。

创建软链接

和创建硬链接类似,我们可以使用ln命令加-s选项创建一个指向现有文件的软链接。该命令至少需要两个参数,即现有文件的路径以及要创建的软链接的路径。

例如,以下命令为现有文件file.txt创建软链接file-slink.txt:

ln -s file.txt /tmp/file-slink.txt

查看软链接

在使用ls -l命令显示文件和目录信息时,第一个字符代表文件类型,若显示为 l 那么就是软链接。并且会用箭头指向它所对应的原文件。

例如,下面所示图中第一个绿框中是 l ,意味findfiles-slink是一个软链接。第二个框显示了它是findfiles的软链接
如何创建和查看软链接和硬链接?这二者的区别是什么?_第3张图片

inode编号妙用

我们还可以通过ls 命令和 -i选项列出文件的索引节点编号,若两个文件处在同一个文件系统且inode编号相同则为硬链接。

例如,以下所示图中,第一列数字即为inode编号。listlist-hlink互为硬链接,它们的inode编号相同。而findfiles和它的软链接findfiles-slinkinode编号并不相同

如何创建和查看软链接和硬链接?这二者的区别是什么?_第4张图片

总结软链接和硬链接的区别

软链接 硬链接
inode 原文件和链接文件是两个不同的文件,它们拥有不同的inode号码 原文件和链接文件是同一个的文件,它们共用同一个inode号码
文件属性 明确指明是链接文件 和原文件的属性一致。因为在本质上硬链接文件和原文件是平等的关系
跨文件系统建立 可以 不可以
指向的文件 可以指向目录或特殊文件 只能指向常规文件
链接数目 文件的链接数目不会增加,文件大小是不一样的(可以简单理解为快捷方式) 文件的链接数会增加,文件大小是一样的
删除原文件对链接文件是否有影响 是,删除原文件后,软链接文件就失效了 否,原文件删除后,链接数会减1,只有链接数减为0时才算真的删除文件

感谢

好啦,这次的分享就到这里,感谢大家看到这里

你可能感兴趣的:(linux)