Linux中的软链接与硬链接

Linux链接概念

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,使用 ln 命令不加参数创建硬链接,加 -s 参数则创建软链接

  • 硬链接即让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了
  • 软链接也称之为符号链接(Symbolic Link)。这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。软链接类似于 Windows的快捷方式。

理解软链接与硬链接

在这里插入图片描述

[zxy@hecs-16693 2024_1_27]$ ll -a
total 8
drwxrwxr-x   2 zxy  zxy  4096 Jan 27 19:11 .
dr-xr-xrwx. 10 root root 4096 Jan 27 19:10 ..
-rw-rw-r--   1 zxy  zxy     0 Jan 27 19:11 file1
[zxy@hecs-16693 2024_1_27]$ ll -i  //-i参数显示文件的inode节点信息
total 0
2359415 -rw-rw-r-- 1 zxy zxy 0 Jan 27 19:11 file1
[zxy@hecs-16693 2024_1_27]$ ln file1 hard.link
[zxy@hecs-16693 2024_1_27]$ ll -i
total 0
2359415 -rw-rw-r-- 2 zxy zxy 0 Jan 27 19:11 file1
2359415 -rw-rw-r-- 2 zxy zxy 0 Jan 27 19:11 hard.link
[zxy@hecs-16693 2024_1_27]$ ln -s file1 soft.link
[zxy@hecs-16693 2024_1_27]$ ll -i
total 0
2359415 -rw-rw-r-- 2 zxy zxy 0 Jan 27 19:11 file1
2359415 -rw-rw-r-- 2 zxy zxy 0 Jan 27 19:11 hard.link
2359416 lrwxrwxrwx 1 zxy zxy 5 Jan 27 19:14 soft.link -> file1

从上面的结果中可以看出,硬链接文件 hard.link 与原文件 file1 的 inode 节点相同,然而软链接文件的 inode 节点不同。

[oracle@Linux]$ echo "I am file1" >>file1
[oracle@Linux]$ cat file1
I am f1 file
[oracle@Linux]$ cat hard.link
I am f1 file
[oracle@Linux]$ cat soft.link
I am f1 file
[oracle@Linux]$ rm -f file1
[oracle@Linux]$ cat hard.link
I am f1 file
[oracle@Linux]$ cat soft.link
cat: soft.link: No such file or directory

通过上面的测试可以看出:当删除原始文件 file1 后,硬链接hark.link 不受影响,但软链接soft.link 文件无效


总结

硬链接:

  • 相当于创建了源文件的副本,不会随着源文件的删除而消失,会随着源文件内容的更改而更改;
  • 硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。比如:A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
  • 硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软链接:

  • 相当于创建了源文件的快捷方式,会随着源文件的删除而失效;
  • 另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。比如:A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

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

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

相关文章

[每日一题] 01.27 - 斐波那契数列

文章目录 打分斐波那契数列 打分 n int(input()) lis list(map(int,input().split())) a sum(lis) - min(lis) - max(lis) print(round(a / (n - 2),2))斐波那契数列 n int(input()) res [] for i in range(n):res.append(int(input()))Max max(res) lis [1,1] for i in…

windows上使用anconda安装tensorrt环境

windows上使用anconda安装tensorrt环境 1 安装tensorrt1.1 下载最新的稳定的tensorrt 8.6.1(tensorrt对应的cuda、cudnn等版本是参考链接4)1.2 将tensorrt添加到环境变量1.3 安装tensorrt依赖1.4 安装Pycuda1.5 安装pytorch 2 测试2.1 测试TensorRT 样例(这个测试主要来源于参考…

C++设计模式介绍:优雅编程的艺术

物以类聚 人以群分 文章目录 简介为什么有设计模式? 设计模式七大原则单一职责原则(Single Responsibility Principle - SRP)开放封闭原则(Open/Closed Principle - OCP)里氏替换原则(Liskov Substitution …

hardware simulation——编译框架搭建

目录 前言 学习Linux的makefile 规范化配置 文件生成过程描述 编码和验证 前言 编译框架搭建遇到了些问题,我对makefile不是那么熟练,能力只停留在能看懂和能改上自己独立写个大工程的编译框架有困难,所以这期我们一起看linux内核的编译…

Mac Monitor:一款为macOS安全研究量身定制的高级独立系统监控工具

关于Mac Monitor Mac Monitor是一款功能强大的高级独立系统安全监控工具,该工具专为macOS安全研究、恶意软件分类和系统故障排除而设计,主要基于Apple Endpoint Security(ES)实现其功能。 Mac Monitor能够收集各种类型的系统事件…

Nginx与keepalived实现集群

提醒一下:下面实例讲解是在mac虚拟机里的Ubuntu系统演示的; Nginx与keepalived实现集群实现的效果 两台服务器都安装Nginx与keepalived: master服务器的ip(192.168.200.2) backup服务器的ip(192.168.200.4) 将 master服务器Nginx与keepalive…

LeetCode.11. 盛最多水的容器

题目 题目链接 分析 这道题的意思就是让我们找两个下标,以这两个下标组成的线为底,高度取这两个位置对应数字的最小值为高,组成一个长方形,求长方形最大的面积可以为多少。 暴力的解法是什么??&#xf…

环形链表的检测与返回

环形链表 王赫辰/c语言 - Gitee.com 快慢指针的差距可以为除一以外的数吗?不可以如果差奇数则无法发现偶数环,是偶数无法发现奇数环,本题思路为指针相遇则为环,而以上两种情况会稳定差一,导致指针永不相遇 最终返回…

【C++中STL】list链表

List链表 基本概念构造函数赋值和交换大小操作插入和删除数据存取反转和排序 基本概念 将数据进行链式存储 链表list是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的,链表是由一系列结点组成,结点的组…

深度强化学习(王树森)笔记04

深度强化学习(DRL) 本文是学习笔记,如有侵权,请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接:https://github.com/wangshusen/DRL 源代码链接:https://github.c…

字符串和C预处理器

本文参考C Primer Plus第四章学习 文章目录 常量和预处理器const限定符 1. 常量和预处理器 有时,在程序中要使用常量。例如,可以这样计算圆的周长: circumference 3.14159 * diameter; 这里,常量3.14159 代表著名的常量 pi(π)。…

5|领域建模实践(上):怎样既准确又深刻地理解业务知识?

上节课咱们完成了事件风暴,梳理了系统的行为需求。但你可能也发现了,其实还有些微妙的业务概念还没有澄清,这就要靠领域建模来完成了。 建立领域模型是 DDD 的核心。要建好领域建模,需要理论和实践相结合。由于我们的模型有一定的…