当前位置: 首页 > article >正文

Linux 软硬连接

1. 硬链接

实际上并不是通过文件名来找到磁盘上的文件,而是通过inode。在linux中可以让多个文件名对应于同一个 inode,而这种方式就是建立硬链接。硬链接是文件系统中的一种链接类型,它创建了文件的一个额外的目录项,但不占用额外的磁盘空间。硬链接与原始文件共享相同的inode,这意味着它们指向文件系统中相同的数据。

在Linux中,创建硬链接的命令是 ln 源文件 硬链接名称,默认情况下不带任何选项时创建硬链接。示例如下:

abc def 的链接状态完全相同,他们被称为指向文件的硬链接。内核记录了这个连接数, inode为
563511  的硬连接数为 2
我们在删除文件时干了两件事情: 1. 在目录中将对应的记录删除, 2. 将硬连接数 -1 ,如果为 0 ,则将对应的磁盘释放。

硬链接的特点包括:

  • 不能跨文件系统创建。
  • 不能对目录创建硬链接。
  • 删除原始文件不会影响硬链接,但如果所有硬链接的数量都被删除,文件的数据才会被实际删除。
  • 修改硬链接文件会影响原始文件,因为它们指向相同的数据。

硬链接在Linux中主要用于以下几个方面:

  • 文件备份:硬链接允许一个文件拥有多个名称,这意味着即使原始文件名被删除,只要还有硬链接指向该文件,文件内容就不会丢失。这可以作为一种简单的文件备份方法。 
  • 文件多人共享:硬链接可以让多个用户或进程通过不同的文件名访问同一份数据,这在需要共享文件时非常有用。 
  • 路径定位:在某些情况下,硬链接可以用于在文件系统中进行路径定位,例如,./..和..是目录的硬链接,分别代表当前目录和上级目录。 
  • 文件系统管理:硬链接可以帮助系统管理员更有效地管理文件系统,例如,通过硬链接可以在不同的目录中创建文件的快捷方式,而不需要复制文件本身。 

2. 软链接

软链接,也称为符号链接,是文件系统中的一种特殊文件,它包含了它所链接文件的路径名。软链接可以跨文件系统,并且可以链接到不存在的文件。如果原始文件被删除,软链接将失效。

在Linux中,创建软链接的命令是 ln -s 源文件/目录 软链接名称,其中 -s 选项表示 soft,指示 ln 命令创建符号链接。示例如下:

可以看到我们成功创建了一个软链接,使用 ls -li 时也指明了link-soft.txt -> soft.txt,即文件link-soft.txt是soft.txt的链接。通过最左侧第一栏可知,软链接和源文件的inode不同,说明是不同的两个文件,实际上软链接的文件内部存储的是源文件的路径。

软链接的特点包括:

  • 可以链接目录。
  • 可以跨文件系统边界。
  • 软链接文件的内容是另一文件的路径名,而不是文件数据本身。
  • 删除原始文件后,软链接将无法访问,因为它只保留了指向原始文件的路径信息。

在日常工作中,软连接(符号链接)的具体用途包括:

  • 环境变量配置:创建软连接到常用的命令或程序目录,简化环境变量的设置,使得在命令行中可以直接访问这些程序。 
  • 路径简化:将长路径或复杂路径创建软连接到一个简短的名字,方便在终端或脚本中快速导航和引用。  
  • 资源管理:当存储资源不足时,可以将文件(如日志文件)移动到新的存储设备上,并在原位置创建软连接,避免修改配置文件中的路径。 
  • 版本控制:在软件开发中,可以通过软连接快速切换不同版本的软件或库,而不需要复制文件。 

如果想要删除一个软连接或者硬连接,使用指令unlink即可。

还要注意的是:不能给目录创建硬连接,只能给目录创建软链接。


http://www.kler.cn/a/286752.html

相关文章:

  • Kyligence AI 数据智能体:首批亮相神州数码 DC·AI 生态创新中心!
  • 【FFmpeg】FLV 格式分析 ③ ( Tag Body 数据块体结构 - Vedio Data 视频数据 )
  • Python collections模块中的 OrderedDict
  • arcgis短整型变为长整型的处理方式
  • Cesium特效——城市白模的科技动效的各种效果
  • PID 控制算法(二):C 语言实现与应用
  • Zynq之IIC使用示例
  • Multisim 仿真入门
  • (已开源-CVPR 2024)YOLO-World: Real-Time Open-Vocabulary Object Detection
  • 以基于Prometheus和Grafana的现代服务器监控体系构建
  • Flutter中组件动态可见的实现
  • Java 入门指南:Java 并发编程 —— AQS、AQLS、AOS 锁与同步器的框架
  • 智能报警物联网系统:使用MQTT和与Grafana集成的InfluxDB监控工地电梯流量和气象数据
  • 用AI生成旅游打卡照!FLUX假装去旅行lora的使用【附工作流】
  • flutter封装Dio使用
  • 计算机毕业设计选题推荐-医疗就诊平台-在线医疗问诊系统-Java/Python项目实战
  • 【硬件操作入门】3--同步与异步、半双工传输、UART硬件介绍、bps速率计算
  • linux 文件管理命令
  • 【Tools】二叉树中序遍历
  • DOM 方法:深入解析与实用指南
  • 静态库和共享库
  • 聚焦AI4SE软件工程领域,基于Multi Agent System多智能体系统开发的最新成果,实现软件开发领域的PUGC!
  • 【Python】简单的爬虫抓取
  • 前端配置环境
  • USB3202N多功能数据采集卡16位模拟量250K频率LabVIEW采集卡
  • 音视频-图像篇(YUV和RGB)