加入收藏 | 设为首页 | 会员中心 | 我要投稿 好传媒网 (https://www.haochuanmei.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux 的硬链接和软连接(符号链接)

发布时间:2022-11-16 17:01:26 所属栏目:Linux 来源:网络
导读: 硬链接:
在文件系统里linux软链接,每一个文件都会有一个索引节点(Inode Index),这个索引节点用来标识这个文件,硬链接就是通过这个索引节点进行链接。只有在同一文件系统中的文件之间才

硬链接:

在文件系统里linux软链接,每一个文件都会有一个索引节点(Inode Index),这个索引节点用来标识这个文件,硬链接就是通过这个索引节点进行链接。只有在同一文件系统中的文件之间才能创建硬链接,不能对目录进行创建(因为目录树可能会变成环,但软链接可以)。硬链接可以建立多个,也就是可以有多个文件指向同一个索引节点,或者说一个文件可以拥有多个路径名,因此一个文件可以对应多个文件名,当删除其中一个文件,指向这个索引节点的数目减一,当为0时,文件彻底删除。

命令:ln 源文件 硬链接文件

为文件a创建一个硬连接a1:两个文件指向同一块数据块,所以对任意文件修改都会反映到其它所有被链接的文件上。如果a被删除了,a1仍然有效,可以被使用。

在这里插入图片描述

在这里插入图片描述

删除a后:a1仍能正常使用

软连接:

软链接可以跨文件系统进行链接,可以理解为软链接的产生就是为了摆脱这个限制的。软链接文件可以是指向任意一个文件系统下的任意文件或目录,不仅如此,软链接还可以指向一个不存在的文件,但是不能对不存在的文件创建硬链接。

在创建软链接的时候要注意一个小问题,不要使用相对路径,就是一定要用绝对路径,不能用相对路径,相对路径创建的软链接无法访问,访问会报错:Too many levels of symbolic links.

软连接可以实现文件或者目录的共享,类似于Windows上的快捷方式。一旦a不存在了,那么a2也会失效。对a进行修改,a2内容也会改变,因为a2本身就是负责寻址a而已。

命令:ln -s 源文件 软链接文件

为文件a创建一个软连接a2:

在这里插入图片描述

删除a后:a2失效

在这里插入图片描述

这时只要在当前目录创建文本文件a,a2会恢复,这时a2指向新的a。

软链接和硬链接文件大小:

gui显示的软硬链接大小都等于产生链接时的源文件大小,之后源文件大小无论怎么改变,链接的大小都不变。

但实际上软链接会写上链接文件的文件名。一个字母一个字节,所以软链接的大小是链接文件名的大小。不随源文件大小改变

硬链接大小随源文件大小改变,始终等于源文件大小。

建立链接时:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

改变源文件a大小后:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

!]()

软链接使用实例:

一个程序main.c隐式调用了动态链接库libyz.so。

将libyz.so移动到别的目录:/home/yz/ 下,再在当前目录下创建软链接(使用绝对路径):

在这里插入图片描述

在这里插入图片描述

使用软链接编译main.c:

成功在没有键入动态链接库的情况下使用了软链接实现编译。

在实际工程中,很多大的工程都是采用软链接来减小工程大小,因为linux大多常用的so文件都放在/urs/lib或/lib目录下,因此工程可以直接默认想要使用的so文件位置,并使用软链接代替。这样就使得多个工程共用系统上独一份的so,减小了多工程的总大小。

也有时候,有时候我们总是需要执行很多寻找路径的命令,如果这些命令要被多次执行,可以考虑使用软链接保存这些项目,之后就可以直接使用自己目录下的软链接,写代码较为方便。

在实际应用中,硬链接使用较少,软链接会使用的多。

(编辑:好传媒网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!