Linux 软硬连接

news2024/9/22 5:38:25

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.coloradmin.cn/o/2096303.html

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

相关文章

网工面试题(安全)

上一篇:网工面试题(数通) 防火墙 防火墙的应用场景 防火墙:部署在网络出口处/服务器区(数据中心)/广域网接入,用于防止外界黑客攻击、保护内网安全硬件。 传统防火墙和下一代防火墙的区别 传统防火墙的功能…

访问win10共享文件夹:用户或密码不正确 以及 未授予用户在此计算机上的请求登录类型

因为安装的是神州网信政府版,该版本通常包含更严格的安全策略和访问控制,设置了共享文件夹后,访问共享文件夹时出现错误。 1、首先报错:用户或密码不正确 将》网络访问:本地账户的共享和安全模型,修改为&a…

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行读写操作

C#上位机使用Microsoft.Office.Interop.Excel和EPPlus库对Excel或WPS表格进行写操作 一、使用Microsoft.Office.Interop.Excel库 1、通过NuGet包管理器添加引用 按照下图中红框所示进行操作。 需要安装Microsoft.Office.Interop.Excel包 添加Microsoft Office 16.0 Object …

预训练语言模型的前世今生 - 从Word Embedding到BERT

目录 一、预训练 1.1 图像领域的预训练1.2 预训练的思想二、语言模型 2.1 统计语言模型2.2 神经网络语言模型三、词向量 3.1 独热(Onehot)编码3.2 Word Embedding四、Word2Vec 模型五、自然语言处理的预训练模型六、RNN 和 LSTM 6.1 RNN6.2 RNN 的梯度消…

Maven的相关配置和使用

Maven的配置: Maven的配置和Java差不多,从镜像站下载相关的Maven版本压缩包,然后解压到自己的D盘,在进行系统变量的配置,新建变量Maven_HOME,然后值设置为Maven的地址,一定是点开文件后就能出现…

【LLM】文生视频相关开源数据集(VidGen、Panda、Cogvideox等)

note 总结了VidGen数据集、Panda-70m数据集、Openvid数据集、OpenVid-1M数据集、Cogvideox训练数据准备过程、ShareGPT4Video数据集等在一篇综述中还总结了评估指标包括:峰值信噪比(PSNR)、结构相似性指数(SSIM)、Inc…

NLP从零开始------16.文本中阶处理之序列到序列模型(1)

1. 序列到序列模型简介 序列到序列( sequence to sequence, seq2seq) 是指输入和输出各为一个序列(如一句话) 的任务。本节将输入序列称作源序列,输出序列称作目标序列。序列到序列有非常多的重要应用, 其中最有名的是机器翻译( machine translation), 机…

Day-01—QT项目的新建

1.选择创建的项目类型,可以看到,这里可以创建多种语言的项目,可以直接用QT来进行前期C 的学习。 2.创建的名字中不要包含中文,可以用英文就用英文,如果不会英文,就用拼音也可以,保存地址中也不要…

aosp13自由窗口项目出现图库app划线不全bug修改-安卓framework实战项目

背景 在学习了马哥的分屏自由窗口pip专题后,进行了相关的自由窗口等比例放大操作,但是操作测试过程中学员朋友们有发现图库app进入自由窗口进行操作放大有红框显示不全的问题。 但是使用图库app时候发现红框居然显示不完整,具体效果如下图&a…

C语言基础(三十)

1、希尔排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 希尔排序函数 void shellSort(int arr[], int n) { for (int gap n / 2; gap > 0; gap / 2) { // 对每个子列表进行插入排…

90分钟实现一门编程语言——极简解释器教程

关键字 解释器, C#, Scheme, 函数式编程 关于 本文介绍了如何使用C#实现一个简化但全功能的Scheme方言——iScheme及其解释器&#xff0c;通过从零开始逐步构建&#xff0c;展示了编程语言/解释器的工作原理。 作者 Lucida a.k.a Luc 如果你是通过移动设备阅读本教程&…

面向对象软件编程——OOP入门实践

工作一段时间了&#xff0c;工作内容趋向于算法模型的复现&#xff0c;就是复现论文算法然后结合业务逻辑开发软件。但是在设计和开发软件时&#xff0c;发现对于OOP理念和软件的设计原则等在实战中还是非常缺乏。于是开始补习&#xff0c;基础软件开发技术。 书籍&#xff1a;…

Arduino UNO 编程 第一期——下载及使用

字幕君已上线...... 副字幕君已上线...... 计数君已上线...... 彩色字幕君 ( 花了重金请来的 ) 已上线...... Doge智能系统已上线...... Doge:嗨嗨我又来了&#xff01; 观众们......已上线&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; OK LETS GO&am…

理解大模型中的Cursor技术:优化长文本推理的前沿方案

理解大模型中的Cursor技术&#xff1a;优化长文本推理的前沿方案 随着自然语言处理&#xff08;NLP&#xff09;领域的快速发展&#xff0c;大型语言模型&#xff08;如GPT系列&#xff09;已广泛应用于文本生成、对话系统和复杂推理任务。然而&#xff0c;随着文本长度的增加…

灾难性遗忘问题(Catastrophic Forgetting,CF)是什么?

灾难性遗忘问题&#xff08;Catastrophic Forgetting&#xff0c;CF&#xff09;是什么&#xff1f; 在深度学习和人工智能领域中&#xff0c;“灾难性遗忘”&#xff08;Catastrophic Forgetting&#xff09;是指当神经网络在增量学习&#xff08;Incremental Learning&#…

用AI生成旅游打卡照!FLUX假装去旅行lora的使用【附工作流】

hello&#xff01;今天我们来聊聊一个特别有意思的话题&#xff1a;如何用AI生成那些看起来像是去过世界各地的旅游打卡照&#xff0c;还能在朋友圈里炫耀一番。很多人看到这些照片都会问&#xff1a;“你真的去过这些地方吗&#xff1f;” 而且最主要的是这种图片做点自媒体旅…

数据仓库系列13:增量更新和全量更新有什么区别,如何选择?

你是否曾经在深夜加班时&#xff0c;面对着庞大的数据仓库&#xff0c;思考过这样一个问题&#xff1a;“我应该选择增量更新还是全量更新&#xff1f;” 这个看似简单的选择&#xff0c;却可能影响整个数据处理的效率和准确性。今天&#xff0c;让我们深入探讨这个数据仓库领域…

RT-DETR+Sort 实现目标跟踪

在前一篇博客中&#xff0c;博主介绍了利用YOLOv8与Sort算法实现目标跟踪&#xff0c;在今天这篇博客中&#xff0c;博主将利用RT-DETR算法与Sort算法相结合&#xff0c;从而实现目标跟踪。。 这里博主依旧是采用ONNX格式的模型文件来执行推理过程&#xff0c;由于Sort算法是基…

vue part6

Vue脚手&#xff08;CLI&#xff09; 第一步&#xff08;仅第一次执行&#xff09;&#xff1a;全局安装vue/cli。 npm install -g vue/cli- 第二步&#xff1a;切换到你要创建项目的目录&#xff0c;然后使用命令创建项目vue create xxxx&#xff08;项目名字&#xff09; 第…

el-table利用折叠面板 type=“expand“ 嵌套el-table,并实现 明细数据多选,选中明细数据后返回原数据得嵌套格式

效果图: 废话不多说直接上代码&#xff0c;完整代码展示&#xff1a; <template><el-tableborderref"multipleTable":data"tableData"tooltip-effect"dark"style"width: 100%"><el-table-columnwidth"50"la…