Linux下软链接和硬链接的区别是什么?

1.定义另一个软链接(也称为符号链接)。
该文件包含另一个文件的路径名。
它可以是任何文件或目录,并且可以链接来自不同文件系统的文件。
硬链接是一个文件的一个或多个文件名。
将文件名链接到计算机文件系统中使用的节点号。
因此,您可以使用多个文件名链接到同一文件。
这些文件可以位于同一目录或不同目录中。
2、限制不同的硬链接只能创建已有的文件,不能在文件系统之间创建硬链接。
可以跨文件系统创建软链接。
/35a85edf8db1cb13784969b9d354564e92584b73"target="_blank"title="点击查看大图"类=“ikqb_img_alink”>/iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/35a85edf8db1cb13784969b9d354564e92584b73"/>3.创建方法不同。
硬链接不能创建目录,只能创建文件。
软链接可以创建文件或目录。
4、影响不同。
删除硬链接文件不会影响其他现有文件。
相同的索引节点号。
删除软链接对其指向的文件没有影响,但如果删除了它指向的原始文件,则关联的软链接称为死链接(即悬空链接)。
如果重新创建指向的路径文件,可能会出现死链接。
(恢复为常规软链接)。

linux硬链接和软链接的区别

在Linux系统中,链接有两种类型,一种是硬链接(Hardlink),另一种称为符号链接或软链接(SymbolicLink)。
①默认情况下,不带参数的ln创建硬链接,带-s参数的ln命令创建软链接。
②硬链接文件的inode节点号与源文件相同,但硬链接文件的inode节点号与源文件不同。
③ln命令不能创建目录的硬链接,但可以创建软链接。
经常使用目录的软链接。
④删除软链接文件对源文件和硬链接文件没有影响。
⑤删除文件的硬链接文件对源文件和软链接文件没有影响。
⑥删除链接文件的源文件,对硬链接文件没有影响,但会使其软链接失效(红底白字闪烁)。
⑦同时删除源文件及其硬链接文件,则真正删除整个文件。
⑧很多硬件设备的快照功能采用了与硬链接类似的原理。
⑨软链接可以跨文件系统,但硬链接不能跨文件系统。

【技术分享】Linux实体链接与符号链接

在Linux系统中,链接文件主要有两种:一种是类似Windows系统的链接,可以快速链接到目标文件(或目录);另一种是类似Windows系统的链接,可以快速链接到目标文件(或目录);另一种是通过inode链接生成新的文件名;文件系统的链接,而不是创建新文件,这称为实体链接(硬链接)。
·HardLink(实体链接、硬链接或硬链接):每个文件占用一个inode,文件的内容由inode记录指示。
读取文件时需要通过读取前目录中记录的文件名指向正确的inode号。
也就是说,文件名只与目录相关,文件内容与inode相关。
那么,多个文件名是否可以对应同一个inode号呢?一些!这就是硬链接的由来。
简单来说,硬链接只是将新文件名添加到目录中给定数量的inode中。
例如,假设/root/crontab是系统中/etc/crontab的实体链接,即这两个文件名链接到同一个inode。
当然,这两个文件名的所有相关信息将完全相同(文件名除外)。
可以发现两个文件名都链接到索引节点号34474855,那么文件权限/属性是否完全相同?因为这两个“文件名”实际上是同一个“文件”!而且你还会发现第二个字段从1变成了2!该字段称为“链接”,该字段的含义是:“有多少文件名链接到该索引节点号”。
如果画一个如何读取正确数据的示意图,就会像下图这样:上图的意思是,你可以跨目录1或2中inode指定的块找到两个不同的文件名,无论是哪个文件被使用。
name可以指向真正的inode来读取最终的数据!那么这样做有什么好处呢?最大的优点就是“安全”!如上图所示,如果你删除任何一个“文件名”,其实inode和block仍然存在!您现在可以通过另一个“文件名”从文件中读取正确的数据!另外,无论编辑使用什么“文件名”,最终结果都会写入相同的inode和块,因此可以编辑数据。
一般来说,当你使用hardlink设置链接文件时,磁盘空间和inode号不会改变!我们再看一下图7.2.1。
从图中我们可以知道,hardlink只是在某个目录下多写入一份与该块相关的数据,既不会增加inode数量,也不会消耗块数量。
在Tipshardlink的制作过程中,仍然可以更改系统锁。
也就是说,当你添加这些数据并且目录块被填满时,你可以添加一个新的块来记录生成的文件名相关性。
磁盘空间变化!然而,一般硬链接使用的关联数据量很小,因此inode和磁盘空间的大小通常不会改变。
其实我们也可以知道,实际上硬链接应该只运行在单个文件系统中,不应该能够跨文件系统!因为它位于同一个文件系统上!因此,硬链接有局限性:·不能遍历文件系统·不能链接目录;不能遍历文件系统很好理解,但是为什么不能硬链接到目录呢?这是因为如果使用硬链接链接到目录时,链接的数据必须与链接目录中的所有数据链接在一起。
例如,如果要使用实体链接为/etc创建/etc_hd目录,则/etc_hd中的所有文件名必须与/etc中的文件名同时链接,而不是简单地链接到/etc_hd和/ETC。
此外,如果将来需要在/etc_hd中创建新文件,则需要为/etc中的数据创建硬链接,从而导致环境变得非常复杂。
所以,硬链接目前暂时不支持目录!·SymbolicLink(符号链接,即快捷方式)与硬链接相比,Symboliclink更容易理解。
基本上,Symboliclink创建一个独立的文件,该文件会将数据直接读取到它链接的文件中。
因为它只使用文件作为引导,因此,当源文件被删除时,符号链接文件将“无法打开”,并且会继续显示“无法打开某个文件!”。
其实,只是你找不到原来的“文件名”而已!例如,我们先创建一个到/etc/crontab的符号链接文件,看一下:从上表的结果我们可以知道,这两个文件指向不同的inode号,显然是两个独立的文件!而链接文件的重要内容是它会写入目标文件的“件名”。
你能找出为什么上表中的链接文件大小是12字节吗?由于箭头(-->)右侧的文件名“/etc/crontab”共有12个英文字符,每个英文字符占用1个字节,因此文件大小为12个字节!对于上面的解释,我们用下图来解释:从inodeno.读取链接文件的内容。
1只是文件名,根据文件名,连接到正确的目录,获取目标文件的inode,最终能够读取到正确的数据。
你可能会发现,如果目标文件(/etc/crontab)被删除,整个过程将无法继续,于是就会出现无法读取快捷方式文件的问题!这里要特别注意。
SymbolicLink和Windows之间的联系可以等同于它。
Symboliclink创建的文件是一个新的独立文件,因此会占用inode而崩溃。