Linux--软硬链接

news2024/12/22 14:31:27

目录

0.文件系统

 1.软硬链接

1.1见一下软硬链接

1.2软硬链接的特征

1.3软硬链接是什么,有什么作用(场景)


0.文件系统

Linux--文件系统-CSDN博客


 1.软硬链接


1.1见一下软硬链接

1.这是软链接

这个命令在Unix和Linux系统中用于创建一个符号链接(也称为软链接或软连接)。具体来说,ln -s file2.txt file_soft.link 命令做了以下事情:

  1. -s:这是一个选项,表示要创建一个符号链接(而不是硬链接)。
  2. file2.txt:这是你要链接到的原始文件或目录。
  3. file_soft.link:这是你要创建的符号链接的名称。

        执行这个命令后,file_soft.link 就会成为一个指向 file2.txt 的符号链接。你可以像操作普通文件一样操作 file_soft.link,但实际上你只是在操作 file2.txt。例如,如果你使用 cat 命令查看 file_soft.link 的内容,你将会看到 file2.txt 的内容。

可以看到它们的inode是不一样的


2.这是硬链接

和建立软连接的区别就是,少了一个-s选项。

使用 cat 命令查看 file_hard.link 的内容,你将会看到 file1.txt 的内容。

可以看到它们的inode是一样的。

1.2软硬链接的特征

根据上面的现象:

硬链接的特征

  1. 硬链接是指向文件系统中已存在文件的引用,它们与原始文件共享相同的inode(索引节点)号和数据块。
  2. 硬链接只是文件的另一个名称或别名,它们与原始文件没有区别。
  3. 硬链接只能对已经存在的文件进行创建,不能跨文件系统或分区。
  4. 硬链接不能对目录进行创建,只能对文件创建。
  5. 删除一个硬链接文件并不会影响其他具有相同inode号的文件。只有当所有硬链接和原始文件都被删除时,文件的数据块才会被释放。

软链接(符号链接)的特征

  1. 软链接是一个特殊的文件,其数据块内容是它所链接文件的路径名。
  2. 软链接可以跨越文件系统或分区,因为它只是保存了目标文件的路径。
  3. 软链接可以对文件或目录进行创建。
  4. 如果删除软链接所指向的原始文件,软链接就会变成“死链接”,因为它指向的文件已经不存在了,如果将软链接文件删除了,更不会影响目标文件,软链接就相当于一个快捷方式从。
  5. 软链接有自己的inode号,但与原始文件不同。

软硬链接的区别

  1. inode号:硬链接与原始文件共享相同的inode号,而软链接则有自己的inode号。
  2. 跨文件系统:软链接可以跨文件系统或分区创建,而硬链接则不能。
  3. 对目录的引用:硬链接不能对目录进行创建,而软链接可以。
  4. 删除影响:删除一个硬链接文件并不会影响其他具有相同inode号的文件;而删除软链接所指向的原始文件,则会使软链接变成“死链接”。
  5. 文件类型:硬链接不是特殊的文件类型,它与原始文件完全一致;而软链接是特殊的文件类型,其数据块内容是目标文件的路径名。

我们还发现属性中有一列硬链接数


1.3软硬链接是什么,有什么作用(场景)

1.软链接的使用场景:

假如我有一个这样的项目结构;

然后我们再拷贝一个ls变成自己的可执行程序myls:

那如果我们的可执行程序被放到了一个很深的路径下,我们就只能这样运行我们的可执行程序,这就十分的麻烦了

        创建软链接(快捷方式),所以软连接就是一个快捷方式,方便我们访问/执行我们的目标文件。

系统下的软链接:我们系统中有各种的库,一般就用软链接的方式,让我们使用它们的名字,就能找到对应的库


2.硬链接的使用场景:

我们给file1.txt建立了硬链接,我们可以看到硬链接(磁盘级的引用计数)数变成了2.

        其实,硬链接就是一个文件名和inode的映射关系,建立硬链接,就是再指定目录下,添加一个新的文件名和inode number 的映射关系。inode number就像一个指针,有两个一样的inode number指向同一个属性,所以它的引用计数就是2(有2个文件名字符串通过inode number指向我的inode)。删除一个文件名和inode的关系,引用计数就变为1,再将硬链接删除,引用计数变为0,此时文件才会被删除。

        1.硬链接主要用于在文件系统中为同一物理文件创建多个访问路径。例如,你可能希望在不复制文件内容的情况下,将某个文件同时放置在多个目录中。这时,你可以使用硬链接。这种方式也可以被理解成,为目标文件建立备份。

        2.硬链接构建Linux的路径结构,让我们可以使用. ..来进行路径定位。

        我们新建了一个目录test,当我们说一个目录的引用计数为2时,这通常是因为每个目录在其父目录中都有一个条目(即一个硬链接),并且它自己还有一个指向自己的.(当前目录)的硬链接。像bin目录引用计数为3,这是因为bin内部还存在一个目录指向通过inode number指向自己。

        在Linux中是不允许对目录  建立硬链接的,这会导致目录循环。例如,如果目录A硬链接到目录B,而目录B又硬链接回目录A,那么在遍历目录结构时,系统可能会陷入无限循环,导致无法正确定位或访问目录。

至此我们可以知道定位一个文件,只有两种方式:

        1.通过路径(软连接)

        2.直接找到目标文件的inode(通过inode number)(硬链接)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是DNS缓存投毒攻击,有什么防护措施

随着企业组织数字化步伐的加快,域名系统(DNS)作为互联网基础设施的关键组成部分,其安全性愈发受到重视。然而,近年来频繁发生的针对DNS的攻击事件,已经成为企业组织数字化发展中的一个严重问题。而在目前各…

vue学习3:开发者调试工具的下载安装

极简插件官网_Chrome插件下载_Chrome浏览器应用商店 (zzzmh.cn) 测试运行程序 网页中右键检查

【Unity3D美术】URP渲染管线学习01

扫盲简介 URP渲染管线是Unity3d提供的一种视觉效果更好的渲染模式,类似的还有Built RP(默认最普通的渲染模式)\ HDRP(超高清,对设备要求高),视觉效果好,而且占用资源少!成为主流渲染管线模式&a…

十进制同步计数器

十进制同步计数器 使用最多的十进制计数器是按照 8421 BCD 码进行计数的电路 十进制同步加法计数器 【例1】设计一个十进制同步加法计数器,要求电路按 8421 BCD 码进行加法计数 Step1:建立原始状态转换图 Step2:选触发器,求方…

粉丝问,有没有UI的统计页面,安排!

移动应用的数据统计页面具有以下几个重要作用: 监控业务指标:数据统计页面可以帮助用户监控关键业务指标和数据,例如用户活跃度、销售额、转化率等。通过实时更新和可视化呈现数据,用户可以及时了解业务的整体状况和趋势。分析用…

LeetCode 128 最长连续序列(hot100) 解题思路分享

题干: 思路: 如果对时间复杂度没有要求的话,可以先排序,再一段一段地找,这样的好处是空间占用小。 如果希望On的话,那就采取设置一个Set的方法,这样空间复杂度是On,但是时间复杂度…

CPP Con 2020:Type Traits I

先谈谈Meta Programming 啥是元编程呢?很简单,就是那些将其他程序当作数据来进行处理和传递的编程(私人感觉有点类似于函数式?)这个其他程序可以是自己也可以是其他程序。元编程可以发生在编译时也可以发生在运行时。…

Python实现将LabelMe生成的JSON格式转换成YOLOv8支持的TXT格式

标注工具 LabelMe 生成的标注文件为JSON格式,而YOLOv8中支持的为TXT文件格式。以下Python代码实现3个功能: 1.将JSON格式转换成TXT格式; 2.将数据集进行随机拆分,生成YOLOv8支持的目录结构; 3.生成YOLOv8支持的YAML文件…

探索亚马逊云科技技术课程:大模型平台与提示工程的应用与优化

上方图片源自亚马逊云科技【生成式 AI 精英速成计划】技术开发技能课程 前言 学习了亚马逊云科技–技术开发技能课程 本课程分为三个部分,了解如何使用大模型平台、如何训练与部署大模型及生成式AI产品应用与开发,了解各类服务的优势、功能、典型使用案…

【QT八股文】系列之篇章2 | QT的信号与槽机制及通讯流程

【QT八股文】系列之篇章2 | QT的信号与槽机制及通讯流程 前言2. 信号与槽信号与槽机制介绍/本质/原理,什么是Qt信号与槽机制?如何在Qt中使用?信号与槽机制原理,解析流程Qt信号槽的调用流程信号与槽机制的优缺点信号与槽机制需要注…

【软考中级 软件设计师】数据结构

数据结构是计算机科学中一个基础且重要的概念,它研究数据的存储结构以及在此结构上执行的各种操作。在准备软考中级-软件设计师考试时,掌握好数据结构部分对于通过考试至关重要。下面是一些核心知识点概览: 基本概念: 数据结构定义…

在NVIDIA Jetson Nano上部署YOLOv5算法,并使用TensorRT和DeepStream进行加速

部署YOLOv5算法在NVIDIA Jetson Nano上并使用TensorRT和DeepStream进行加速涉及几个关键步骤。下面是一个详细的指南: 步骤 1: 准备YOLOv5模型 训练或下载预训练模型:首先,你需要有一个YOLOv5模型。你可以自己训练一个模型,或者…

响应式处理-一篇打尽

纯pc端响应式 pc端平常用到的响应式布局 大致就如下三种,当然也会有其他方法,欢迎评论区补充 将div height、width设置成100% flex布局 flex布局主要是将flex-wrap: wrap, 最后,你可以通过给子元素设置 flex 属性来控制它们的…

构建全面的无障碍学习环境:科技之光,照亮学习之旅

在信息与科技日益发展的当下,为所有人群提供一个包容和平等的学习环境显得尤为重要,特别是对于盲人朋友而言,无障碍学习环境的构建成为了一项亟待关注与深化的课题。一款名为“蝙蝠避障”的辅助软件,以其创新的设计理念与实用功能…

Excel 按顺序去重再编号

Excel的A有重复数据: A1Cow2Chicken3Horse4Butterfly5Cow 现在要去除重复,用自然数按顺序进行编号,结果写在相邻列: AB1Cow12Chicken23Horse34Butterfly45Cow1 使用 SPL XLL,输入公式并向下拖: spl(&q…

云平台的安全能力提升解决方案

提升云平台的安全能力是确保数据和服务安全的关键步骤。针对大型云平台所面临的云上安全建设问题,安全狗提供完整的一站式云安全解决方案,充分匹配云平台安全管理方的需求和云租户的安全需求。协助大型云平台建设全网安全态势感知、统一风险管理、统一资…

Zabbix-agents (windows环境)安装及配置

目录 一. 简介 Zabbix 服务端 1. Zabbix 服务器(Server) 2. Zabbix 数据库 3. Zabbix Web 前端 Zabbix 客户端 1. Zabbix 代理(Agent) 2. 安装和配置 二. 下载 三. 安装 四. 检查是否启动 五. 手动启动方式 六 .创建…

Python面向对象数据库之ZODB使用详解

概要 ZODB(Zope Object Database)是一个纯Python的面向对象数据库。它允许程序员将Python对象以透明的方式存储在数据库中,无需将对象模型转换为关系模型,极大地简化了Python应用的数据持久化工作。 安装 安装ZODB非常简单,可以通过Python的包管理器pip进行安装: pip …

leecode热题100---994:腐烂的橘子

题目: 在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格; 值 1 代表新鲜橘子; 值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回…

ABP.VNET 项目结构

想要了解ABP分层架构:ABP分层架构-CSDN博客 可以看此篇文章 apb.vnet 生成的项目的目录结构 .Application 项目 应用服务用于将领域(业务)逻辑暴露给展现层。 展现层通过传入DTO(数据传输对象)参数来调用应用服务,而应用服务通过领域对象来执行相应的…