Linux硬链接和软连接是什么?

在Linux操作系统中,文件管理是一个基本且重要的概念。其中,软链接(Symbolic Link)和硬链接(Hard Link)是文件系统中两种不同类型的链接方式,它们在文件管理和操作中扮演着重要的角色。
软链接

软链接也成为符号链接,类似于 Windows 中的快捷方式。它是一个特殊类型的文件,包含的是另一个文件路径名的文本指针。软链接可以跨文件系统链接到任何文件或目录。

硬链接

硬链接是指向文件系统中某个文件的实际物理位置的直接链接。在Linux中,文件实际上是存储在磁盘上的数据块(或inode)的引用。硬链接就是这些数据块的另一个名称或引用。创建硬链接相当于给文件增加了一个新的名字。

软链接

软链接是一种特殊类型的文件。它包含的不是文件的实际数据,而是指向另一个文件的路径名。这个路径名可以指向任意一个文件系统的任意文件或者目录,甚至可以指向一个不存在的文件。

当创建软链接时,系统会在文件系统中创建一个新的文件。因此软链接有自己的inode和数据块。但是这些数据块存储的不是文件的实际数据,而是目标路径的字符串。

当访问软链接时,系统会读取软链接文件中存储的路径信息,然后根据这个路径找到并访问目标文件。如果目标文件被移动或删除,软链接将失效,因为它存储的路径不再指向一个有效的文件。

硬链接

当创建一个硬链接时,实际上是在目录项中增加了一个新的文件名,这个新文件名指向同一个inode号。因此,原文件和硬链接共享同一个inode和数据块,任何对文件内容的修改都会反映在所有硬链接上。

每个inode有一个引用计数,表示有多少个文件名(硬链接)指向这个inode。当删除一个硬链接时,相应inode的引用计数减一。只有当引用计数降到零时,系统才会释放inode和数据块。

存储方式:硬链接直接指向文件的inode,而软链接是一个独立的文件,指向原始文件的路径。

跨文件系统:硬链接不能跨文件系统,软链接可以。

删除影响:删除硬链接的一个引用不会影响其他引用。删除软链接的源文件,软链接将失效。

inode号:硬链接拥有与原始文件相同的inode号,而软链接有自己的inode号。

存储和所有权:硬链接与原文件共享相同的权限和所有权,软链接则可能有不同的权限和所有权。

软链接:

跨文件系统的链接:当需要链接到不同文件系统中的文件时,使用软链接。

  • 链接到目录:只有软链接可以链接到目录。

硬链接:

备份:硬链接常用于备份,因为它们不占用额外的磁盘空间(不需要额外存储数据和inode结构,但是需要存储目录项)。

文件重命名或移动:在重命名或移动文件时,硬链接可以保持文件的一致性。

多人共享:当多人需要对同一个文件进行操作的时候,如果每次都是直接操作原始文件,一旦有一个人执行了误删除,则该文件将立即永久消失。但如果每个人都在私人目录中创建一个该文件的硬链接,即使有一个人误删了他自己的文件,也不会导致原始文件被删除,大幅降低文件意外丢失的概率。

创建软链接

ln -s original.txt symlink.txt

创建硬链接

ln original.txt hardlink.txt

  • 硬链接限制:不能对目录创建硬链接,也不能跨文件系统。
  • 软链接路径:软链接的路径应该准确,否则链接将指向一个不存在的位置。
  • 权限问题:软链接的权限总是lrwxrwxrwx,但实际访问权限取决于源文件。
  • 备份和恢复:在备份和恢复时,软链接可能需要特别处理,以保持其指向正确的位置。

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

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

相关文章

有效解决wordpress的502 Bad Gateway错误提示

摘要:最近有客户反映使用阿里云虚拟云主机,wordpress常提示502 Bad Gateway错误,网关错误是网站上遇到的常... wordpress的502 Bad Gateway错误如何修复? 第1步:偶发错误可尝试重新加载网站 偶尔出现流量突发爆增或是服…

Sql Server关于表的建立、修改、删除

表的创建: (1)在“对象资源管理器”面板中展开“数据库”节点,可以看到自己创建的数据库,比如Product。展开Product节点,右击“表”节点,在弹出的快捷菜单中选择“新建表”项,进入“…

mysql中information_schema.tables字段说明

第一篇 1. 获取所有表结构(TABLES) SELECT * FROM information_schema.TABLES WHERE TABLE_SCHEMA数据库名; TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎&…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion简介

Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如

K-means算法通俗原理及Python与R语言的分别实现

K均值聚类方法是一种划分聚类方法,它是将数据分成互不相交的K类。K均值法先指定聚类数,目标是使每个数据到数据点所属聚类中心的总距离变异平方和最小,规定聚类中心时则是以该类数据点的平均值作为聚类中心。 01K均值法原理与步骤 对于有N个…

Java8流操作

Java8流操作 1. 双层Map一层List 1. 双层Map一层List 代码片 // 开始分组Map<String, Map<Object, List<ProjectGeographyVO>>> collect4 vos.stream()// 注释了下行没用市级项目,只有区// .filter(data -> String.valueOf(data.getCode()).length() …

[HITCON 2017]SSRFme perl语言的 GET open file 造成rce

这里记录学习一下 perl的open缺陷 这里首先本地测试一下 发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行 然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行 然后这里如果file可控那么就继续可以实现命令执行 这里就…

JavaSE基础50题:12. 编写代码模拟三次密码输入的场景。

概述 编写代码模拟三次输入的场景&#xff0c;最多能输入三次密码&#xff0c;密码正确&#xff0c;提示 “登录成功” &#xff0c;密码错误&#xff0c;可重新输入&#xff0c;最多输入三次&#xff0c;三次均错&#xff0c;则提示退出程序。 代码 import java.util.Scann…

Redission分布式锁原理初探

什么是分布式锁&#xff0c;为什么需要分布式锁 在多线程并发请求当中&#xff0c;为了保证我们的资源同一时刻只有一个线程进行操作&#xff08;如商品超卖问题、购票系统等&#xff09;&#xff0c;我们通常要添加锁机制&#xff0c;如ReentrantLock&#xff0c;也就是可重入…

企业微信小群发公告的接口和功能测试

企业微信小群发公告的接口和功能测试&#xff0c;可以从以下几个方面进行&#xff1a; 功能测试&#xff1a; 1.验证发送公告的基础功能。例如&#xff0c;发送公告是否能够被成功发送到小群中&#xff0c;公告内容是否能够被所有群成员看到。 2.验证公告的多种设置功能&…

C# 使用FluentScheduler触发定时任务

写在前面 FluentScheduler是.Net平台下的一个自动任务调度组件&#xff0c;以前经常用的是Quarz.Net&#xff0c;相对而言FluentScheduler的定时配置更为直观&#xff0c;可直接用接口进行参数化设置&#xff0c;对Cron表达式有恐惧症的人来说简直就是福音&#xff0c;使用起来…

对于技术人员实力的判断

技术实力的迷思 俗话说“文无第一&#xff0c;武无第二”&#xff0c;技术就是一种“文”的能力&#xff0c;很多时候我们很难直观看出一个技术人员的实力&#xff0c;但不管是公司招聘的面试&#xff0c;还是公司内部的晋升面评&#xff0c;都需要在较短时间内快速判断一个技…

Linux——进程状态

我们都知道进程信息被放到了PCB&#xff08;task_struct&#xff09;中&#xff0c;可以理解为进程属性的集合。 PCB中包含了进程的ID&#xff0c;时间片&#xff0c;pc指针&#xff0c;所有的寄存器&#xff0c;进程状态、优先级、I/O状态信息等等...有兴趣的可以去看看源码&…

excel xla文件怎么导入到excel

在Excel中导入XLA文件&#xff08;Excel Add-In&#xff09;的步骤如下&#xff1a; 1. **打开Excel&#xff1a;** 启动 Microsoft Excel 应用程序。 2. **选择“文件”选项卡&#xff1a;** 点击Excel窗口左上角的“文件”选项卡。 3. **选择“选项”&#xff1a;** 在文件…

【计算机网络笔记】物理层——频带传输基础

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

LAMP和分离式LNMP部署

目录 一.什么是LAMP&#xff1f; 二.安装LAMP 先安装apache&#xff0c;httpd网页服务&#xff1a; 接着安装mysql&#xff1a; 安装php&#xff1a; 创建论坛&#xff1a; 三.安装分布式LNMP&#xff1a; 先安装nginx&#xff1a; 到另一台主机安装php&#xff1a; …

Android 默认打开应用的权限

有项目需要客户要安装第三方软件&#xff0c;但是要手动点击打开权限&#xff0c;就想不动手就打开。 //安装第三方软件&#xff0c;修改方式 frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java //找到如下源码&#xff1a; //有三种方…

整数二分的建模

当题目能够使用整数二分法建模时&#xff0c;主要有整数二分法思想进行判定&#xff0c;它的基本形式如下&#xff1a; while(left < right) {int ans;//记录答案 int mid left (right - left) / 2;//二分if(check(mid)){//检查条件&#xff0c;如果成立 ans mid;//记录…

Python实现的二叉树的先序、中序、后序遍历示例

一、先序、中序、后序遍历的次序&#xff1a; 创建好一棵二叉树后&#xff0c;可以按照一定的顺序对树中所有的元素进行遍历。按照先左后右&#xff0c;树 的遍历方法有三种&#xff1a;先序遍历、中序遍历和后序遍历。 其中&#xff0c;先序遍历的次序是&#xff1a;如果二叉…

《算法面试宝典》--机器学习常见问题汇总

第二章 机器学习基础 ========================= ​ 机器学习起源于上世纪50年代,1959年在IBM工作的Arthur Samuel设计了一个下棋程序,这个程序具有学习的能力,它可以在不断的对弈中提高自己。由此提出了“机器学习”这个概念,它是一个结合了多个学科如概率论,优化理论,…