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

本文介绍了Linux中硬链接和软链接的工作原理,包括它们如何通过索引节点实现文件共享、创建方法、查看方式以及它们之间的主要区别,如硬链接共享inode,而软链接是文件路径的引用。
摘要由CSDN通过智能技术生成


hello大家好😊

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

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

索引节点(inode)

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

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

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

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

示例:
在这里插入图片描述

硬链接

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

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

创建硬链接

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

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

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

查看硬链接

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

例如,下面所示图中绿色框里的数字代表着对应文件的硬链接数。
在这里插入图片描述

软链接

另一种链接方式是这样的,文件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的软链接
在这里插入图片描述

inode编号妙用

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

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

在这里插入图片描述

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

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

感谢 💖

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不怕娜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值