【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别

🎁个人主页:我们的五年

🔍系列专栏:Linux课程学习 

🌷追光的人,终会万丈光芒

🎉欢迎大家点赞👍评论📝收藏⭐文章

Linux学习笔记:

 https://blog.csdn.net/djdjiejsn/category_12669243.html

前言: 

本篇旨在认识软硬链接,站在操作系统OS的角度,学习完文件系统之后看待动静态库。学习他的目的最重要的是区分他们的不同,还有不同的应用场景和效果。希望本篇文件能够对你有所帮助。善于学习,勤于总结,乐于分享。

本篇重点知识点:

1.文件名不保存在inode中,如何理解,我们如何找到文件inode?

2.删除文件的本质是什么?

3.不准对目录建立硬链接,会产生环状目录。但是操作系统自己有建立了硬链接,影藏的.. 和 .。

4.为什么新建目录的硬链接数是2,普通文件的硬链接数是1?根目录的..文件如何理解?

目录

本篇重点知识点:

一.预备知识:

1.1文件inode:

1.1.1那么如何找到它在哪一个目录?

1.1.2为什么找到文件的inode就能找到文件的信息?

1.2文件的类别:

1.3文件的权限:

1.4文件硬链接数:

1.5其他:

二.软链接(soft link )(快捷方式)

2.1如何建立软链接:

2.2为什么说建立软链接会新建一个文件?

2.3软连接文件中的内容:

三.硬链接(hard link):

3.1理解硬链接:

3.2如何理解硬链接数:

3.2.1为什么新建目录时,硬链接数是2?

3.2.2对于根目录的。。

3.3inode引用计数=硬链接数:

四.不同点和相同点:

4.1文件系统方面:

4.2内容方面:

4.3独立的inode方面:

4.4删除行为:

4.5对目录方面:

4.6权限方面:



一.预备知识:

这一块的知识是文件系统的知识,说起这个就谈了一下我理解的,后面会进行复习编写一篇理解文件系统,理解磁盘的博客。

1.1文件inode:

下面最前的是文件的inode,inode是每个文件的唯一标识符,在inode中保存着文件的属性,还有一张表,这张表指向的是data block表示文件占用的块。在磁盘中,应该扇区大小可能是512字节,8个扇区构成一个块,所以一个块的大小为4KB大小。以后进行操作,都是以块为单位进行操作。就算只操作这个块上的一个字节内存,也要把整个块加载到内存,然后再修改,写回磁盘。但是注意:文件名不保存在inode中。

文件的inode是保存在该所在目录的inode的文件目录项(entry)中。 每一个目录项中,都会有文件名和inode的对应关系。所以当我们在这个目录下,就能知道该目录的inode,就能知道该目录下的所有文件。

ll -i :查看文件的inode

 

1.1.1那么如何找到它在哪一个目录?

这就是层层往上找的过程。但是必须知道家目录在哪,在操作系统启动的时候,就知道根目录,用户的家目录在哪,所以其他的文件都能找到了。文件名和inode是有对应关系的,但是可以让可以多个文件名对应一个inode,这样当删除一个文件时,还有其他的文件能知道文件inode。

1.1.2为什么找到文件的inode就能找到文件的信息?

如果有两个文件指向同一个inode,当删除一个文件时,断开了该文件名与inode的关系。在该目录下的文件项中就没有改文件名与inode的对应关系。但是我们还有另外一个文件与这个inode有对应关系,所以能在磁盘中找到这个文件。这就是备份的原理

1.2文件的类别:

新建一个普通文件以-开头;

新建一个目录是d开头;

建立软连接是开头;

1.3文件的权限:

后面的wrx,有三个,表示拥有者,所属组,和其他人的权限。-表示没有该权限。

1.4文件硬链接数:

表示该文件的inode与几个文件名直接有联系。新建一个目录的硬链接数是2,普通文件是1,为什么?在下面的硬链接时会讲,这里提一下是因为目录创建时,会在该目录下建立.指向自己,..指向新建目录的所在目录,所以新建目录,会让新建目录所在的目录的硬链接数+1。其他的下面再讲。

1.5其他:

其他就表示文件的拥有者和所属组,还有文件的大小,文件包建立时间,文件名等信息。


二.软链接(soft link )(快捷方式)

会新建文件,有新的inode就表示新建了文件。该文件中保存着指向文件的路径。很像windows下的快捷方式。

2.1如何建立软链接:

ln表示link的缩写,s表示soft。所以表示软链接,记忆还是很好记的。下面就表示给dir1文件建立软连接,lg文件指向log.txt文件。

ln -s log.txt lg

2.2为什么说建立软链接会新建一个文件?

因为它有独立的inode!!!

下面我们建立了一个软链接,但是这个两个文件的inode不是同一个。这一点就可以证明软连接是新建了文件的。当我们在dir1写入内容是,cat打印dr,也可以显示我们刚刚写入的内容。这就有点像和快捷方式靠了。

2.3软连接文件中的内容:

软连接新建文件,有独立的inode,内容中保存目标文件的路径,类似于windows下的快捷方式。


三.硬链接(hard link):

3.1理解硬链接:

在上面说可以查看文件的硬链接数。硬链接不是一个独立的文件

ln:不加-s 就表示硬链接。

下面表示我们新建硬链接以后,该文件的inode和我们指向文件的inode是一样的,本质是建立文件与已经存在的文件的inode之间的映射关系,所以硬链接在磁盘上没有新建文件。

3.2如何理解硬链接数:

3.2.1为什么新建目录时,硬链接数是2?

因为新建的目录,本身文件就指向该磁盘下的inode,此时硬链接数是1。但是目录创建时,还会在该目录下创建。指向自己,所以应链接数是2。inode的应用计数是2。

当我们在一个目录下新建一个目录,原来的目录硬链接数为3,因为新建目录中。。文件也是指向原来的目录的,所以原来的目录硬链接数是3。

3.2.2对于根目录的。。

更目录/没有上一级目录,他的。。还是指向自己。Linux操作系统为了让根目录和其他目录一样,没有区别。所以更目录中的隐藏文件。。虽然指向自己,但是它的硬链接数不会+1。这样才能保证根目录和其他的文件一样,没有差别。

下面所示的,看到根目录的inode是2,它的硬链接数是2,所以除了自己和。文件,它还有17个子目录。数下面的子目录,发现确实根目录下面有17个目录。

那么1是干什么的,还是可以去探讨的,可能是启动程序的inode,啊哈哈哈哈哈哈哈哈哈哈。

3.3inode引用计数=硬链接数:

这个也很好理解,在磁盘中,inode来管理文件。找到inode,就能在磁盘中找到文件的属性和内容。我们每新建一个文件与inode关联,就是可以通过文件名找到文件的inode。所以inode就要有引用计数。当引用计数为0时,才能表示文件被删除。


四.不同点和相同点:

4.1文件系统方面:

软链接可以跨越不同的文件系统,而硬链接只能在同一个文件系统中创建。

磁盘可能被分成几个区,每一个区可能用的是不同的文件系统。当然不同的区可以用同样的文件系统。一套文件系统,就会有inode bitmap等其他东西进行管理。在不同的文件系统中,相同inode表示的是不同的文件。硬链接就是去建立与inode的关系,所以如果跨文件系统创建文件系统,就会出错。

4.2内容方面:

硬链接直接指向文件的数据,而不是文件名或路径。软连接的内容保存的是目标文件的路径。

4.3独立的inode方面:

软连接有独立的inode,是新的文件。但是硬链接还是指向的inode,没有新建。

4.4删除行为:

软链接删除不会影响目标文件,因为软链接的文件中保存的是目标文件的路径。但是当目标文件被删除时,或者找不到的时候,就会发生找不到。

4.5对目录方面:

不能对目录建立硬链接,这样会目录树结构混乱。可以对目录进行软连接。

4.6权限方面:

硬链接指向的还是目标文件,权限和目录文件一样。软链接有新的文件,权限也是独立的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/483189.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【森林生态系统揭秘】用R语言解锁森林结构、功能与稳定性分析!生物多样性与群落组成分析、路径分析、群落稳定性分析等

目录 专题一 理论讲解 专题二 数据获取与处理 专题三 生物多样性与群落组成分析 专题四 机器学习在群落分析中的应用 专题五 路径分析和结构方程模型(SEM) 专题六 群落稳定性分析 专题七 案例分析与写作指南 在生态学研究中,森林生态系…

无分类编址的IPv4地址

/20含义:前20比特位为网络号,后面32-2012为主机号 路由聚合:找共同前缀 所有可分配地址的主机都能接收广播地址,

初始化列表与Static成员

一、再谈构造函数 1.1构造函数体赋值 在创建对象时,编译器会调用构造函数,给对象中各个成员变量一个合适的初始值 class Date { private:int _year;int _month;int _day; public:Date(int year, int month, int day){_year year;_month month;_day …

THENA大涨将对整个DeFi市场产生怎样的影响?

引言 近期,区块链行业的一个热门项目——THENA(THE)代币,在短时间内吸引了大量投资者的目光。THE代币的价格在短短几个月内经历了显著的上涨,引发了市场对其背后机制的浓厚兴趣。而在THENA生态系统的成功背后&#xf…

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章

在人工智能领域,我们正见证着一场革命性的变革。传统的AI助手,如ChatGPT,需要明确的指令才能执行任务。但现在,清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent,它能够主动观察环境…

SpringBoot(一)

Springboot(一) 什么是SpringBoot SpringBoot是Spring项目中的一个子工程,与Spring-famework同属于Spring的产品 用一些固定的方式来构建生产级别的Spring应用。SpringBoot推崇约定大于配置的方式以便于能够尽可能快速的启动并运行程序 我们把Spring Boot称为搭建程…

PDF与PDF/A的区别及如何使用Python实现它们之间的相互转换

目录 概述 PDF/A 是什么?与 PDF 有何不同? 用于实现 PDF 与 PDF/A 相互转换的 Python 库 Python 实现 PDF 转 PDF/A 将 PDF 转换为 PDF/A-1a 将 PDF 转换为 PDF/A-1b 将 PDF 转换为 PDF/A-2a 将 PDF 转换为 PDF/A-2b 将 PDF 转换为 PDF/A-3a 将…

【设计模式系列】备忘录模式(十九)

目录 一、什么是备忘录模式 二、备忘录模式的角色 三、备忘录模式的典型应用场景 四、备忘录模式在Calendar中的应用 一、什么是备忘录模式 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许在不暴露对象内部状态的情况下保存和恢…

window 下用Ollama 开发一个简单文档问答系统

文档问答系统 本系统利用先进的语言模型和检索技术,为用户提供基于上传文件内容的问答服务。支持多种文件格式,包括 Word、PDF、CSV、SQL 和 TXT 文件。 功能介绍 文件上传 用户可以同时上传多个文件。支持的文件类型包括:.doc, .docx, .…

全国296个地级市平均房价数据(2000-2022年)

全国296个地级市平均房价数据(2000-2022年),包括面板数据和截面数据 点击下载 1、数据来源:安居客、房天下、房价行情网等住房交易网页整理 2、时间跨度:2000-2022年 3、区域范围:全国296个地级市 4、缺失说明:西…

贴片式内存卡 ​SD NAND​

SD NAND FLASH 贴片式SD卡 贴片式t卡 存储芯片 1. 什么是贴片式内存卡 贴片式内存卡是指一种将内存芯片直接贴装在电路板上的内存卡类型。与传统的插针式内存卡(如SD卡、MicroSD卡)不同,贴片式内存卡通常不具有外部引脚或接口,而…

C—操作符易错点

strlen与sizeof strlen求的是大小,包含“\0” strlen求的是,长度不包括“\0” 注意:空格也算一个字符 操作符“/”(除法) 对于除法操作符来说,两边都是整数,那么就是整数除法 如果想计算出小数&#x…

基于PyTorch框架的线性回归实现指南

目录 ​编辑 1. 线性回归基础 2. PyTorch环境搭建 3. 数据准备 4. 定义线性回归模型 5. 损失函数和优化器 6. 训练模型 7. 评估模型 8. 结论 线性回归是统计学和机器学习中最基本的预测模型之一,它试图找到输入特征和输出结果之间的线性关系。在深度学习框…

R语言机器学习论文(六):总结

文章目录 介绍参考文献介绍 本文采用R语言对来自进行数据描述、数据预处理、特征筛选和模型构建。 最后我们获得了一个能有效区分乳腺组织的随机森林预测模型,它的性能非常好,这意味着它可能拥有非常好的临床价值。 在本文中,我们利用R语言对来自美国加州大学欧文分校的B…

基于Java Springboot校园导航微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse微信开发…

面试题-RocketMQ的基本架构、支持的消息模式、如何保证消息的可靠传输

相关问题 1、RocketMQ的基本架构是怎样的?请简述各组件的作用。 2、RocketMQ支持哪几种消息模式(如点对点、发布/订阅)?请简要说明它们的区别。 3、如何使用Java客户端实现一个简单的消息生产者和消费者? 4、RocketMQ…

WPF+LibVLC开发播放器-LibVLC在C#中的使用

使用WPFLibVLC快速 开发一个播放器 安装包Nuget 安装下面两个包,必须安装两个 一个是相关框架对应的包,Winform就安装LibVLCSharp.Winform;WPF就安装LibVLCSharp.WPF,以此类推,他们都默认依赖LibVLCSharp,不需要例外安装 一个是…

CSS变量用法及实践

目录 一、基本用法 1.1、定义变量 1.2、使用变量 1.3 、修改变量的值 二、命名规范 2.1、使用有意义的名称 2.2、使用命名空间 三、变量值类型 3.1、如果变量值是一个字符串,可以与其他字符串拼接,例如: 3.2、 如果变量值是数值&a…

WEB开发: 丢掉包袱,拥抱ASP.NET CORE!

今天的 Web 开发可以说进入了一个全新的时代,前后端分离、云原生、微服务等等一系列现代技术架构应运而生。在这个背景下,作为开发者,你一定希望找到一个高效、灵活、易于扩展且具有良好性能的框架。那么,ASP.NET Core 显然是一个…

【汇编语言】标志寄存器(一) —— 标志寄存器中的标志位:ZF、PF、SF、CF、OF 一网打尽

前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原理,提升代码效率,尤其在嵌入式系统和性能优…