Linux基础之软硬链接

参考链接:https://baijiahao.baidu.com/s?id=1770724291436944734&wfr=spider&for=pc

一、定义

1.硬链接(Hard Link)

硬链接是指多个文件名指向同一个物理文件的链接关系。它们在文件系统中具有相同的inode号(索引节点号),但可以位于不同的目录中。当创建硬链接时,实际上是为文件增加了一个新的路径入口。

1.1做一个硬链接

使用的是ln 命令

[root@localhost opt]# cat mx/test/1.txt
1
2
3
[root@localhost opt]# pwd
/opt
[root@localhost opt]# ln ./mx/test/1.txt ./hardLink.txt
[root@localhost opt]# ls
hardLink.txt  mx
[root@localhost opt]# cat ./hardLink.txt
1
2
3

2.软连接(Symbolic Link)

软链接是指一个文件名指向另一个文件或目录的符号链接。与硬链接不同,软链接实际上是一个特殊类型的文件,其中包含指向目标文件或目录的路径信息。

2.1做一个软链接

用ln -s 命令

[root@localhost opt]# ln -s /opt/mx/test ./symbolicLink #注意我这里是直接做了一个目录的软链
[root@localhost opt]# ll
total 8
-rw-r--r-- 2 root root    6 Mar 28 14:21 hardLink.txt
drwxr-xr-x 3 root root 4096 Feb 25 16:53 mx
lrwxrwxrwx 1 root root   12 Mar 28 16:21 symbolicLink -> /opt/mx/test  #这个文件类型是l,代表是个软链
[root@localhost opt]# ll ./symbolicLink/ #对比两个目录发现两个目录下的文件一样
total 16
-rw-r--r-- 2 root root    6 Mar 28 14:21 1.txt
-rw-r--r-- 1 root root 1143 Mar 13 14:29 ca.conf
-rw-r--r-- 1 root root 1517 Mar 13 14:29 ca.crt
-rw------- 1 root root 1708 Mar 13 14:29 ca.key
[root@localhost opt]# ll ./mx/test/
total 16
-rw-r--r-- 2 root root    6 Mar 28 14:21 1.txt
-rw-r--r-- 1 root root 1143 Mar 13 14:29 ca.conf
-rw-r--r-- 1 root root 1517 Mar 13 14:29 ca.crt
-rw------- 1 root root 1708 Mar 13 14:29 ca.key

二、工作原理

1.硬链接

在创建硬链接时,操作系统会为新创建的链接分配相同的inode号,并在文件系统中的目录项中添加对应的链接关系。因此,无论通过哪个文件名访问该文件,都指向同一个inode,即同一个文件内容。

#仔细看两个文件的inode,发现都是398527
[root@localhost opt]# stat hardLink.txtFile: hardLink.txtSize: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 398527      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-03-28 16:12:02.347650497 +0800
Modify: 2025-03-28 14:21:29.901617545 +0800
Change: 2025-03-28 16:20:20.170640517 +0800Birth: 2025-02-25 16:54:07.759464599 +0800
[root@localhost opt]# stat ./mx/test/1.txtFile: ./mx/test/1.txtSize: 6               Blocks: 8          IO Block: 4096   regular file
Device: fd03h/64771d    Inode: 398527      Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-03-28 16:12:02.347650497 +0800
Modify: 2025-03-28 14:21:29.901617545 +0800
Change: 2025-03-28 16:20:20.170640517 +0800Birth: 2025-02-25 16:54:07.759464599 +0800

2.软连接

创建软链接时,操作系统会为其分配一个新的inode,并在文件系统中的目录项中添加软链接的信息,指向目标文件或目录的路径。当访问软链接时,操作系统会通过路径信息找到目标文件或目录。
使用ls -i命令,发现test目录和symbolicLink目录的inode不一样

-i, --inode print the index number of each file

[root@localhost opt]# ls -i ./
398527 hardLink.txt  400897 mx      12 symbolicLink
[root@localhost opt]# ls -i ./mx/
400899 cluster  400910 clusterName.txt  398526 test

三、特点

1.硬链接

硬链接与原始文件之间没有区别,它们是完全平等的。删除任何一个链接都不会影响其他链接。
硬链接不能跨越不同的文件系统,因为每个文件系统都有自己独立的inode空间。

#先删除源文件看看硬链接文件在不在,测试发现硬链接文件是存在的
[root@localhost opt]# rm -f ./mx/test/1.txt
[root@localhost opt]# ls
hardLink.txt  mx  symbolicLink
[root@localhost opt]# cat hardLink.txt
1
2
3

2.软连接

软链接是一个独立文件,它的大小仅占用几个字节的存储空间。
删除原始文件或目录不会影响软链接的存在,但访问软链接时若目标文件不存在,则会报错。

[root@localhost opt]# cd mx/
[root@localhost mx]# ls
cluster  clusterName.txt  test
[root@localhost mx]# cp -r  test ./test1  #先备份一下目录
[root@localhost mx]# ls
cluster  clusterName.txt  test  test1
[root@localhost mx]# cd ..
[root@localhost opt]# ls
hardLink.txt  mx  symbolicLink
[root@localhost opt]# rm -rf ./mx/test #删除原目录
[root@localhost opt]# ll -a
total 16
drwxr-xr-x.  3 root root 4096 Mar 28 16:21 .
dr-xr-xr-x. 18 root root 4096 Feb  7 13:45 ..
-rw-r--r--   1 root root    6 Mar 28 14:21 hardLink.txt
drwxr-xr-x   3 root root 4096 Mar 28 16:39 mx
lrwxrwxrwx   1 root root   12 Mar 28 16:21 symbolicLink -> /opt/mx/test  # 链接文件是在的
[root@localhost opt]# ls ./symbolicLink
./symbolicLink
[root@localhost opt]# ls ./mx/
cluster  clusterName.txt  test1

看截图效果会明显一点,链接文件存在但是已经不能用ls 命令查看了
在这里插入图片描述

四、应用场景

1.硬链接

共享文件:多个用户或进程可以使用硬链接来共享同一个文件,节省存储空间。
备份文件:通过创建硬链接,可以在不占用额外存储空间的情况下生成文件的备份副本。
系统文件管理:一些系统文件经常需要在不同位置进行引用,通过创建硬链接可以简化管理和维护。

2.软链接

快捷方式:软链接可以创建桌面或文件夹中的快捷方式,方便用户快速访问目标文件或目录。
软件安装:在某些操作系统中,软链接常用于指向已安装软件的可执行文件,简化软件的升级和管理。
跨文件系统引用:软链接可以跨越不同的文件系统,将一个文件或目录链接到另一个文件系统中。

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

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

相关文章

python每日十题(13)

一般把计算机完成一条指令所花费的时间称为一个指令周期。指令周期越短,指令执行就越快。本题答案为D选项。 顺序程序具有顺序性、封闭性和可再现性的特点,使得程序设计者能够控制程序执行的过程(包括执行顺序、执行时间),对程序执…

0328-内存图2

是否正确待定: Perso类 package com.qc.内存图2;public class Perso {public int age;public String name;public static int flag;public void m1() {}public static void m2() {}Overridepublic String toString() {return "Perso [age" age "…

Java 开发中的 AI 黑科技:如何用 AI 工具自动生成 Spring Boot 项目脚手架?

在 Java 开发领域,搭建 Spring Boot 项目脚手架是一项耗时且繁琐的工作。传统方式下,开发者需要手动配置各种依赖、编写基础代码,过程中稍有疏忽就可能导致配置错误,影响开发进度。如今,随着 AI 技术的迅猛发展&#x…

一文详解k8s体系架构知识

0.云原生 1.k8s概念 1. k8s集群的两种管理角色 Master:集群控制节点,负责具体命令的执行过程。master节点通常会占用一股独立的服务器(高可用部署建议用3台服务器),是整个集群的首脑。 Master节点一组关键进程&#xf…

ubuntu下docker 安装 graylog 6.1

下载docker compose相关仓库 https://github.com/Graylog2/docker-compose 按readme所述,拷贝.env.example并重命名 .env 按.env中的说明创建密码和密钥 创建GRAYLOG_PASSWORD_SECRET 用: pwgen -N 1 -s 96 创建GRAYLOG_ROOT_PASSWORD_SHA2 用: echo -n yourpa…

创新驱动 智领未来丨中威电子全景展示高速公路数字化创新成果

在数字经济与新型基础设施建设深度融合的背景下,中国智慧交通产业正迎来前所未有的发展机遇。3月27日,第27届中国高速公路信息化大会暨技术产品博览会在青岛市红岛国际会议展览中心盛大开幕。作为高速公路信息化领域的创新先锋,中威电子&…

计算机期刊征稿 | 计算机-网络系统:物联网系统架构、物联网使能技术、物联网通信和网络协议、物联网服务和应用以及物联网的社会影响

IEEE Internet of Things Journal 学科领域: 计算机-网络系统 期刊类型: SCI/SSCI/AHCI 收录数据库: SCI(SCIE),EI ISSN: 2327-4662 中科院: 1区 影响因子: 8.2 JCR: Q1 IEEE Internet…

springBoot统一响应类型3.3版本

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…

mapbox基础,加载popup弹出窗

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️popup 弹出窗 api1.3.1 ☘️构造函数1.…

MySQL基础语法1

目录 #1.创建和删除数据库 ​编辑#2.如果有lyt就删除,没有则创建一个新的lyt #3.切换到lyt数据库下 #4.创建数据表并设置列及其属性,name是关键词要用name包围 ​编辑 #5.删除数据表 #5.查看创建的student表 #6.向student表中添加数据,数据要与列名一一对应 #7.查询st…

【ESP32S3】esp32获取串口数据并通过http上传到前端

通过前面的学习(前面没发过,因为其实就是跑它的demo)了解到串口配置以及开启线程实现功能的工作流程,与此同时还有esp32作为STA节点,将数据通过http发送到服务器。 将这两者联合 其实是可以得到一个:esp32获…

CSS 美化页面(二)

一、CSS 属性详解 1、字体属性 (Font) 属性描述值示例简写属性font-family设置字体系列"Arial", sans-serif font: italic small-caps bold 16px/1.5 "Arial", sans-serif; font-size设置字体大小16px, 1.2em, 1remfont-weight设置字体粗细normal, bold,…

win32汇编环境,网络编程入门之十四

;win32汇编环境,网络编程入门之十四 ;在这一教程里&#xff0c;学习一下&#xff0c;如何得到网页的标题 ;这里需要理解一下html语言&#xff0c;<title> </title>标签对里面的内容即为网页的标题 ;其原理是把返回的字符串&#xff0c;按字节进行检查&#xff0c;发…

[已解决]服务器CPU突然飙高98%----Java程序OOM问题 (2024.9.5)

目录 问题描述问题排查问题解决参考资料 问题描述 业主单位服务器自8月29日晚上21:00起CPU突然飙高至98%&#xff0c;内存爆满&#xff0c;一直到9月5日&#xff1a; 问题排查 ①执行 top 命令查看Java进程PID top②执行top -Hp PID 命令查看具体的线程情况 top -Hp 3058输入上…

UI产品经理基础(六):如何解决用户的质疑?

在需求调查中遇到用户质疑“不专业”或“不了解需求”&#xff0c;本质上是用户对产品经理的信任缺失或沟通鸿沟导致的。要化解这种质疑&#xff0c;需从专业能力展示、沟通方式优化、用户参与感提升三个维度切入&#xff0c;结合具体场景采取针对性策略。以下是系统化的解决方…

小型水库大坝安全及水雨情监测技术方案

一、小型水库监测系统构成 小型水库雨水情测报和大坝安全监测系统由水库监测站点、通信网络和监测平台等组成&#xff0c;系统总体架构如图所示。 水库监测站点设施包括&#xff1a;雨量计、水位计、视频监视设备、渗压计、量水堰计、变形监测仪器、数据采集仪、遥测终端、水准…

win11+ubuntu双系统安装

操作步骤&#xff1a; 官网下载ubuntu 最新镜像文件 准备U盘 准备一个容量不小于 8GB 的 U 盘&#xff0c;用于制作系统安装盘。制作过程会格式化 U 盘&#xff0c;请注意提前备份数据。 制作U盘启动盘 使用rufus工具&#xff0c;或者 balenaEtcher工具&#xff08;官网安…

搭建前端环境和后端环境

搭建前端环境 ①、安装vscode&#xff0c;并安装相应的插件工具 ②、安装node.js&#xff0c;可以选择当前版本&#xff0c;或者其他版本 ③、创建工作区 创建一个空文件夹&#xff0c;然后通过vscode工具打开&#xff0c;保存为后缀名为.code-workspace ④、从gitee…

I.MX6ULL 开发板上挂载NTFS格式 U 盘

I.MX6ULL 开发板上挂载NTFS格式 U 盘 挂载失败安装NTFS-3G安装失败成功安装 移植挂载成功卸载U盘 挂载失败 我使用的U盘的格式是NTFS格式的 插入U盘时会有信息 我使用的是闪迪的U盘&#xff0c;大小标称是 32G &#xff0c;实际能用的只有 28G 左右 可以使用lsblk命令查看磁盘…

K. Dice Game(ICPC)

备赛ICPC时&#xff0c;我是没想到还有数学题&#xff0c;高数都快忘完了......... 题目链接&#xff1a;Problem - K - Codeforces 我们对于某一个抽到的值x&#xff0c;其他n个人中的某一个人赢我们的概率是&#xff1a; (m-x)/m(m-x)/m^2(m-x)/m^3....(m-x)/m^K&#xff0…