在linux系统中,硬链接(hard link)和软链接(symbolic link)是两个非常重要的概念,而很多朋友在学习的时候,通常不容易区分这两个概念,所以在这里做一些记录,大家共同进步。

在正式开始说明前,先讲一些不算是题外话的题外话。

对于linux有一定了解的朋友都知道linux里面有一个重要的概念叫做i结点,即inode。

如果有人问你,一个系统里面可以存放多少文件?你会怎么回答?

其实,在这里,我觉得用剩余i结点的个数更准确。因为我们知道,在linux系统中,任何一个独立(注意:这里强调是独立的文件)的文件,都会为其分配一个i结点,它们是对应的,然后通过i结点再找到相应的文件的实际存储内容

接下来,我们动手实践一下,去观察观察:

首先,我们建立一个源文件block.txt,再建立两个硬链接和一个软链接文件

touch block.txt   #建立一个源文件block.txt

ln block.txt block_hd    #建立硬链接

ln block.txt block_hd2   #建立硬链接

ln -s block.txt block_soft   #建立软链接

接下来查看一下各个文件的情况:

我们仔细观察一下发现,block_hd,block_hd2,block.txt拥有一样的i结点(显示结果的第一列,即270209),甚至于连权限属性都一模一样。而block_soft拥有另外一个独立的i结点。我们在前面曾经说过,每一个i结点对应一个实际的文件。所以,我们可以发现,建立的硬链接实际上跟我们的源文件是一样的。而软链接则是重新建立了一个独立的文件

事实上,硬链接的本质就是一条文件名和i结点的关联记录而已

另外,我们观察一下这几个文件的大小,由于我们的源文件是空文件,所以大小是0。那为什么两个硬链接也是0?而软链接却是9呢?

因为硬链接关联着我们的源文件,所以源文件的大小是多大,它们就是多大。至于软链接的大小为什么是9,这个就比较有趣了,大家观察一下软链接指向的源文件名(“block.txt”)的长度,是不是9?对了,我们的软链接会写上链接文件的文件名。一个字母一个字节,所以是9个字节,所以软链接的大小是9。

可能有人对于上面的说法有怀疑,别慌,我们接着测试一下。我们往空的源文件里写入一些东西。如图就是手指飞舞后的结果:

我们再看下几个链接文件的变化:

我们发现,源文件和硬链接大小都是77,而软链接依旧是9。

我们再查看下硬链接和软链接内容:

我们发现,我们的链接内容都是和源文件的内容一模一样,这也再次印证刚才的说法。

那么一定有人问了,如果删除了源文件会出现什么结果呢?

大家可以先猜一猜。

当我们删除了源文件之后,发现硬链接还能正常显示原本的内容,而软链接则提示文件不存在,这是怎么回事?

我们刚才说过,软链接是建立了另一个新的独立的文件,它指向源文件,因为源文件没了,所以它就不能正常指向了;而硬链接为什么依旧能显示原来的内容呢?回到我们一开始的解释,硬链接实际是一条文件名与i结点的记录。所以,在删除源文件的时候,系统则将链接数减1,当链接数为0的时候,inode就会被系统回收,文件的内容才会被删除。我们试一试。

上图中的红框就是链接数。

Linux中的软链接和硬链接相关推荐

  1. Linux中的软链接与硬链接

    Linux中的软链接与硬链接 一.inode的概念 二.软链接 三.硬链接 硬链接的两个限制 四.软链接与硬链接的区别 一.inode的概念 此部分参考:https://blog.csdn.net/M ...

  2. Linux系统:软链接与硬链接的原理分析

    1.相关概念 1.索引节点inode(index node):inode就是索引节点,它用来存放档案及目录的基本信息,包含时间.档名.使用者及群组等. inode 是 UNIX/Linux 操作系统中 ...

  3. Linux文件的软链接和硬链接

    1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. 1.1索引节点 索引节点是指 ...

  4. linux命令创建硬链接,Linux中的ln命令:创建软链接和硬链接

    软链接是Linux文件系统的基本组成部分之一.在本教程分享了如何使用ln命令创建软链接和硬链接. 链接是对另一个文件的引用.链接为同一个文件赋予多个名称,并允许它们同时存在于两个或多个位置. 链接有两 ...

  5. linux给文件添加链接,Linux给文件或目录创建软链接或硬链接的方法

    有时linux用户们为了使用方便,会想给电脑中的文件或目录创建软链接或硬链接.不过有些用户不清楚该怎么给这些文件或目录创建软链接或硬链接该怎么办呢?别急,现在小编就来教你解决的方法. 解决方法: 当我 ...

  6. linux创建文件软链接命令,Linux创建文件或目录软链接、硬链接的技巧

    有时Linux用户们为了使用方便,会想给电脑中的文件或目录创建软链接或硬链接.不过有些用户不清楚该怎么给这些文件或目录创建软链接或硬链接该怎么办呢?别急,现在小编就来教你解决的方法. 解决方法: 当我 ...

  7. 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)

    一.Linux系统的文件存储结构 在Linux系统中,对计算机中的数据和硬件资源进行管理都是以文件的形式,目录.字符设备.套接字.硬盘.光驱.打印机等都被抽象成文件形式("Linux系统一切 ...

  8. linux命令--ln软连接,硬链接

    ln:英文名link,链接的意思. Linux 系统中有软链接和硬链接两种特殊的"文件". 硬链接特征: 1) 硬链接文件跟源文件拥有相同的i(inode)节点和存储block块, ...

  9. Q45:软链接和硬链接

    软链接和硬链接 为了解决文件共享问题,Linux引入了软链接和硬链接. 除了为Linux解决文件共享使用,还带来了隐藏文件路径.增加权限安全及节省存储等好处. 硬链接 如果一个inode号对应多个文件 ...

  10. linux 软链接_Linux 中软链接和硬链接的区别 | Linux 中国

    链接(Link)是一种快捷访问机制,它通过一个文件指向原始文件或目录的方式实现快捷访问,同时还记录了原始文件或目录的一些信息.https://linux.cn/article-12270-1.html ...

最新文章

  1. string和stringstream用法总结
  2. 编程一个最简单游戏_一个关于AI编程的游戏
  3. 合成复用原则java实例_第7节 合成复用原则
  4. 如何在JavaScript中区分深层副本和浅层副本
  5. 当年一道python面试题的失利让我错过心仪公司,希望你不会
  6. 1200万的天价离职赔偿!
  7. tensorflow笔记2:TensorBoard
  8. android 广播反注册后,BroadcastReceiver注册、使用及其权限
  9. android 如何实现apk search出现在系统的推荐列表里
  10. POJ-1087 A Plug for UNIX 网络流
  11. Tensorflow2.0.0版本和Keras2.4.3不兼容
  12. 折合分数的公式计算机,高考分数换算公式(高考分数折合怎么算)
  13. 孙子问题-中国剩余定理
  14. PC文件在线互传网站推荐
  15. 呼吸灯verilog实现
  16. tensorflow2.x实现人脸关键点检测
  17. 中国古代地方官制------地方行政机构之沿革简释
  18. vc中操作INI文件函数
  19. 网络持续演进不仅是技术活儿,还是一个“哲学问题”
  20. 申请软著材料提交注意事项

热门文章

  1. nagios完整配置文档(第一版) PDF 下载
  2. 世界经济危机对我们淘宝人的影响
  3. (六)maven私服nexus与配置
  4. 【Redis】跳跃列表
  5. windows计算机计划,IT之家学院:如何简单玩转Win10自带任务计划
  6. H.264量化参数QP和量化步长Qstep
  7. html 设置宽度最低值,详解css中inline-block的最小宽度值
  8. mybatis Mapper文件标签使用
  9. error: taking address of temporary array av_make_error_string((char[AV_ERROR_MAX_STRING_SI。。。
  10. 【绝密】指针大厂笔试题