复习文件系统-导入软硬链接

一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)。 除了硬链接以外,还有一种特殊情况。文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。 这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。

软硬连接

在shell中,硬链接是通过inode引用另外一个文件,软链接是通过名字引用另外一个文件。

创建软链接ln -s 被链接的文件名 链接文件

上述命令是创建软链接的,ln表示link,-s表示soft

[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ touch ceshi.txt
[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ ln -s ceshi.txt CESHI_Soft.LINK//为ceshi.txt创建软链接,CESHI_Soft.LINK访问ceshi.txt
[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ ll
total 0
lrwxrwxrwx 1 yyq yyq 9 Feb  7 17:12 CESHI_Soft.LINK -> ceshi.txt//可以看出文件类型是l,叫做链接文件
-rw-rw-r-- 1 yyq yyq 0 Feb  7 17:11 ceshi.txt

再看看这两个文件的inode

[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ ls -i -l
total 0
922006 lrwxrwxrwx 1 yyq yyq 9 Feb  7 17:12 CESHI_Soft.LINK -> ceshi.txt//软连接也是一个独立的文件,有自己独立的inode
922005 -rw-rw-r-- 1 yyq yyq 0 Feb  7 17:11 ceshi.txt//文件权限后面的1表示链接数

创建硬链接ln 被链接的文件名 链接文件

[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ ln ceshi.txt CESHI_Hard.LINK
[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ ll
total 0
-rw-rw-r-- 2 yyq yyq 0 Feb  7 17:11 CESHI_Hard.LINK
lrwxrwxrwx 1 yyq yyq 9 Feb  7 17:18 CESHI_Soft.LINK -> ceshi.txt
-rw-rw-r-- 2 yyq yyq 0 Feb  7 17:11 ceshi.txt
-------------inode信息--------------
922005 -rw-rw-r-- 2 yyq yyq 0 Feb  7 17:11 CESHI_Hard.LINK//硬链接的inode与ceshi.txt一样,多个文件名指向同一个inode,该inode的链接数变为2(inode的引用计数-硬链接数)
922006 lrwxrwxrwx 1 yyq yyq 9 Feb  7 17:18 CESHI_Soft.LINK -> ceshi.txt
922005 -rw-rw-r-- 2 yyq yyq 0 Feb  7 17:11 ceshi.txt

删除链接文件

unlink 文件名

区别

1、软硬链接的区别是:是否具有独立的inode!软链接有独立的inode,可以被当作独立文件看待;硬链接没有独立的inode,与文件共用一个inode,硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。

2、计数特征:硬链接会更改目标文件的引用计数(新增文件名,建立和inode的映射关系),软链接在文件内容中保存目标文件的路径(即通过路径,说白了就是文件名建立映射关系)。

3、硬链接删除后,不影响原文件;删除原文件,不影响硬链接。软链接删除后,不影响原文件;删除原文件,会影响软链接(提示“没有该文件或目录”)。

4、软链接可以对一个不存在的文件名(filename)进行链接,硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。

硬链接

建立一个硬链接,OS做了什么?在指定的路径下(目录)创建硬链接,在目录的data block中新增硬链接的文件名和被链接文件的inode的映射关系。(告诉目录我就要和他建立链接关系)

通过观察,我们可以看到硬链接的属性、拥有者所属组、文件大小、时间等都是与被链接文件一样的。建立硬链接实际上什么都没做,没有创建新文件。因为没有给硬链接分配独立的inode。既然硬链接没有创建新文件,那么硬链接的属性集合和内容集合用的肯定是别的文件的。

inode的引用计数–就叫做硬链接数,我们在删除文件时干了两件事情:1.在目录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。

什么时候一个文件算被真正地删除呢?不单单是位图对应的比特位置0,而是其硬链接数变成0的时候才算被真正删除

普通文件和目录的默认硬链接数

创建一个普通文件,其硬链接数为1;创建一个目录,其硬链接数为2。

为什么普通文件的默认硬链接数为1呢?因为一个普通文件就有其对应的inode,文件名与inode形成映射关系,所以算1个硬链接。

为什么目录的默认硬链接数为2呢?因为在目录中还有隐藏的....表示当前路径,即.是这个目录的一个硬链接。从下面的代码可以看到.empty的inode编号922010相同。故第1个硬链接为文件名自己;第2个硬链接为.所表示的当前路径。

[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ ll -i -n
922010 drwxrwxr-x 2 1001 1001 4096 Feb  8 13:55 empty
[yyq@VM-8-13-centos 2023_02_07_Hard-Soft_Link]$ cd empty
[yyq@VM-8-13-centos empty]$ ll -a -i -n
total 8
922010 drwxrwxr-x 2 1001 1001 4096 Feb  8 13:55 .//empty的硬链接
922001 drwxrwxr-x 3 1001 1001 4096 Feb  8 13:55 ..//上层目录的硬链接数会+1

普通用户不允许给目录创建硬链接,可以建立软链接。为什么?而...不就是给目录建立硬链接吗?

因为OS不允许普通用户创建,...是特殊情况,是由OS自己创建的。目录硬链接产生了很多回环依赖的关系,并且导致了很多歧义性。实际上Linux的目录结构虽然经常被称为目录树,是不带回环的图结构。

硬链接是与本体完全等价,无法单独处理,会导致递归;符号链与本体不等价,可以单独处理,不会导致递归。而文件不会导致递归,所以可以硬链接。

软连接/符号链接

是一个独立的文件,有独立的属性和内容。软链接标定/查找一个文件时,不是用inode去找到文件的,而是根据文件名来找文件的。软链接的数据块保存的是所指向的目标文件的路径(路径就是用文件名组成的)。

应用场景

动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库

ACM时间

Access 最后访问时间: 软硬链接、cat命令(多次访问时间可能不变)等操作,

Modify 文件内容最后修改时间: echo重定向修改内容等操作

Change 属性最后修改时间: chmod命令等操作,

modify和change这两个时间可能联动,因为modify可能会让文件的属性(大小等)发生改变。access时间,访问一定的次数到规定值时才会刷新,因为平时我们的操作就是访问文件,如果每次访问都要刷新访问时间,要把数据更新到磁盘,而磁盘io太慢了,故现在linux对access时间做了调整。

inode与软硬链接相关推荐

  1. Linux——文件系统inode与软硬链接

    目录 一.inode (一).背景知识 (二).inode 二.软硬链接 (一).软链接 (二).硬链接 一.inode (一).背景知识 我们知道,磁盘是按磁道与扇区划分.Linux把一个磁盘进行了 ...

  2. Linux中的 inode以及 软硬链接分析

    一. inode 是什么?(索引节点)理解inode 需要知道文件存储,文件是存储在硬盘上的,操作系统读取硬盘的时候会连续读取多个扇区(硬盘的最小存储单元),即一次性读取一个块(文件存取的最小单位). ...

  3. 【Linux】文件系统与inode、软硬链接

    目录 一.磁盘结构 二.文件系统 2.1 文件系统的区域划分 2.2 文件系统分区介绍 2.3 文件名与inode 三.软硬链接 3.1 软链接 3.2 硬链接 一.磁盘结构 理解文件系统前首先我们要 ...

  4. Linux 文件系统与inode,软硬链接

    目录 磁盘的结构 磁盘的抽象(虚拟,逻辑)结构 分区 Block Group 块组: 分析: 文件名 vs inode编号 创建/删除/查看 一个文件,操作系统做了什么? 软硬链接 软连接 硬链接 对 ...

  5. inode和软硬链接

    文章目录: 一.理解文件系统 1.1 什么是inode 1.2 磁盘了解 1.2.1磁盘的硬件结构 1.2.2 磁盘的分区 1.2.3 EXT2文件系统 二.软硬链接 2.1 软链接 2.2 硬链接 ...

  6. 【Linux】文件系统/inode/软硬链接

    目录 一.了解磁盘 1.磁盘的概念 2.磁盘的物理结构 3.磁盘的逻辑结构 4.磁盘区域的划分 二.linux文件系统 三.inode 四.软硬链接 1.软链接 2.硬链接 一.了解磁盘 前言: 一般 ...

  7. Linux系统编程23:基础IO之了解硬盘物理和逻辑结构及明白inode的本质和掌握软硬链接及其区别

    文章目录 (1)硬盘的逻辑结构与物理结构 A:物理结构 B:逻辑结构 (2)inode A:inode是什么 B:块组 C:块中有什么 D:创建,删除文件的本质 E:目录的本质 (3)软硬链接 A:复 ...

  8. Linux inode、block、文件类型、软硬链接等相关文件的知识

    1 Linux中的文件 1.1 文件属性概述 Linux系统中的文件或目录的属性主要包括:索引节点(inode).文件类型.权限属性.链接数.所归属的用户和用户组.最近修改时间等内容. [root@o ...

  9. linux中的inode文件编号和软硬链接

    目录 inode编码 磁盘 扇区 目录下的data block inode 和 文件名的关系 软硬链接 硬链接 软连接 inode编码 一个文件,对应一个inode属性节点,inode编号,linux ...

最新文章

  1. 2017年智能家居将从概念走进现实
  2. java ADT生成带签名的apk
  3. POJ2669不错的最大流 竞赛问题(枚举King的个数)
  4. 用Matlab模拟一个缓冲区大小为10的随机排队系统
  5. 二维数组中的一些问题
  6. 有关identity的小技巧
  7. 爬虫 spider05——使用httpclient发送get请求、post请求
  8. 汇编语言程序设计,计算比赛成绩
  9. 解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题...
  10. 五、CPU详解、寄存器详解、标志寄存器详解
  11. 程序员们如何破局 5G?
  12. 万维网之父:Facebook、Google 等硅谷巨头必须被拆分!
  13. 数据结构上机实践第11周项目2 - 操作用邻接表存储的图
  14. win10系统安装提示带有gui的服务器,安装win10提示“由于技术员系统中无接入音频设备,要启动GUI”如何...
  15. 非极大值抑制(Non-max suppression)
  16. 晕晕沉沉的一天,ISAPI_Rewrite 2.9破解版竟然是假的
  17. error: invalid operands of types ‘QLabel*‘ and ‘void‘ to binary ‘operator>
  18. Android直接回复通知
  19. Android解析SRT字幕文件
  20. SHIMANO套件差别详解

热门文章

  1. ubuntu18.04 安装matlab2022a
  2. 本质安全设备标准(IEC60079-11)的理解(四)
  3. 计算机网络体系结构——“计算机网络”
  4. 【其他】2PC两阶段提交协议
  5. 【Linux】deb文件如何安装?
  6. Matlab打开笔记本摄像头
  7. 逆向工程实验Pre5
  8. ubuntu tamat eclipse
  9. 隧道内车辆精确定位方案
  10. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-934 序列