Linux 软硬链接

目录

软硬链接

软链接

硬链接

软硬链接的区别

硬链接场景

软连接场景


软硬链接

软链接

我们可以通过以下命令创建一个文件的软连接

ln -s mytest softlink-mytest

通过 ls -i -l 命令我们可以看到,软链接文件的inode号与源文件的inode号是不同的,并且软链接文件的大小比源文件的大小要小得多

软连接又叫符号链接,软链接文件相对于源文件来说是一个独立的文件,该文件有自己的inode编号,但是该文件只包含了源文件的路径名,所以软连接文件相比于源文件要小很多。软连接就相当于Windows操作系统当中的快捷方式

软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能执行或是查看软链接的内容了

硬链接

我们可以通过以下命令创建一个文件的硬链接

ln mytest hardlink-mytest

通过 ls -i -l 命令我们可以看到,硬链接文件的inode编号和源文件是相同的,并且硬链接文件大小与源文件大小也是相同的,特别注意的是,当创建了一个硬链接文件后,该硬链接文件和源文件的硬链接数(引用计数)都变成了2

硬链接文件就是源文件的一个别名,一个文件有几个文件名,该文件的硬链接数就是多少,这里inode号为412561的文件有mytest和hardlink-mytest两个文件名,因此该文件的硬链接数为2

硬链接数

任意一个文件,无论目录还是普通文件,都有inode,每一个inode内部,都有一个叫做引用计数得计数器

目录中保存的是文件名:inode编号的映射关系

例如:

文件1:inode 1234

文件2:inode 1234

文件3:inode 1234

文件4:inode 1234

不同文件可以映射同一个inode编号,这里使用的引用计数

这样的映射关系很像 “指针”

与软连接不同的是,当硬链接的源文件被删除,硬链接文件依旧能正常执行,只是文件的硬链接数减少了一个,因为此时该文件的文件名少了一个,所谓的建立硬链接,本质就是在特定目录的数据块中新增文件名和指向文件名的inode编号的映射关系

硬链接就是让多个不在或者同在一个目录下的文件名,同时能够修改同一个文件,其中一个修改后,所有与其有硬链接的文件都一起修改了

tips: 删除软硬链接,我们使用unlink + 软硬链接文件

为什么刚刚创建的目录的硬链接数是2?

我们创建一个普通文件,该普通文件的硬链接数是1,因为此时该文件至于一个文件名。

为什么我们创建一个目录之后,该目录的硬链接数为2?

因为每个目录创建后,该目录默认会有两个隐含文件 . .. ,它们分别代表当前目录和上一级目录,因此这里创建的目录有两个名字一个dir另一个就是该目录下的 . ,所以刚创建的目录的硬链接数是2,通过命令我们也可以看到dir和该目录下的 . 的inode编号是一样的,也就可以说明它们代表的实际上是同一个文件

tips:该目录下有效目录的个数等于该目录的硬链接数减2

软硬链接的区别

1. 软连接是一个独立的文件,有独立的inode,而硬链接没有独立的inode

2. 软链接相等于快捷方式,硬链接本质没有创建文件,只是建立了一个文件名和已有的inode的映射关系,并写入当前目录的数块

硬链接场景

硬链接用来维护整个目录结构,路径定位采用硬链接,可以进行目录间切换

注意:不允许目录进行硬链接,但是可以进行软链接

如果对目录采用硬链接可能会产生环路问题,操作系统是不允许的

难道  . .. 不是硬链接?,它是操作系统设置好的进行搜索时不能使用

软连接场景

例如:我创建了一个项目,但是指向文件藏得很深,这样给用户使用就很不方便,所以这时我们就可以创建一个软连接给用户

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

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

相关文章

不同开发语言之for循环的用法、区别总结

一、Objective-C &#xff08;1&#xff09;标准的c风格 for (int i 0; i < 5; i) {NSLog("i %d", i); } &#xff08;2&#xff09;for in循环。 NSArray *array ["apple", "banana", "orange"]; for (NSString *fruit in …

计算机毕设-基于springboot的物业管理系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

景联文科技:以精准数据标注赋能AI进化,构筑智能时代数据基石

在人工智能技术席卷全球的浪潮中&#xff0c;高质量数据已成为驱动AI模型进化的核心燃料。作为全球领先的AI数据服务解决方案提供商&#xff0c;景联文科技深耕数据标注领域多年&#xff0c;以技术为基、以专业为本&#xff0c;致力于为全球客户提供全场景、高精度、多模态的数…

批量合并 Word 文档,支持合并成一个 Word,也支持按文件夹合并

我们经常会碰到需要将多个 Word 文档批量合并成一个 Word 文档的场景&#xff0c;比如需要合并后打印、合并后方便整理存档等等。如果是人工的操作&#xff0c;会非常的麻烦。因此我们通常会借助一些批量处理脚本或者寻找批量处理的工具来帮我们实现批量合并 Word 文档的操作。…

数据安全基石:备份文件的重要性与自动化实践

在数字化时代&#xff0c;数据已成为企业和个人不可或缺的重要资产。无论是企业的运营数据、客户资料&#xff0c;还是个人的学习资料、家庭照片&#xff0c;这些数据都承载着巨大的价值。然而&#xff0c;数据的安全问题也日益凸显&#xff0c;硬件故障、软件错误、人为失误以…

用IdleHandler来性能优化及原理源码分析

背景&#xff1a; 经常在做一些app冷启动速度优化等性能优化工作时候&#xff0c;经常可能会发现有时候需要引入一些第三方sdk&#xff0c;或者库&#xff0c;这些库一般会要求我们在onCreate中进行初始化等&#xff0c;但是onCreate属于生命周期的回调方法&#xff0c;如果on…

SyntaxError: Invalid or unexpected token in JSON at position x

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

04.基于C++实现多线程TCP服务器与客户端通信

基于C实现多线程TCP服务器与客户端通信 目录 一、项目背景与目标二、从零开始理解网络通信三、相关技术背景知识 1. 守护进程(Daemon Process)2. 线程池(Thread Pool)3. RAII设计模式 四、项目整体结构与逻辑五、核心模块详细分析 1. TCP服务器模块2. 线程池模块3. 任务处理模…

从0到1入门Linux

一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…

Nginx负载均衡配置详解:轻松实现高可用与高性能

在现代Web应用中&#xff0c;负载均衡是确保系统高可用性和高性能的关键技术之一。Nginx作为一款高性能的HTTP服务器和反向代理服务器&#xff0c;其负载均衡功能被广泛应用于各种场景。本文将详细介绍如何使用Nginx实现负载均衡配置&#xff0c;帮助开发者轻松应对高并发和大流…

使用chroot预安装软件到ubuntu22中

1、安装依赖 # 安装依赖工具 sudo apt update && sudo apt install -y \ squashfs-tools \ genisoimage \ xorriso \ isolinux \ syslinux-utils \ p7zip-full sudo apt update sudo apt install grub-pc-bin grub-efi-amd64-bin -y # 创建工作目录 mkdir -p ./custom-…

php代码审计工具-rips

代码审计 代码审计就是检查所写的代码中是否有漏洞&#xff0c;检查程序的源代码是否有权限从而被黑客攻击&#xff0c;同时也检查了书写的代码是否规范。通过自动化的审查和人工审查的方式&#xff0c;逐行检查源代码&#xff0c;发现源代码中安全缺陷所造成的漏洞&#xff0…

Docker参数,以及仓库搭建

一。Docker的构建参数 注释&#xff1a; 1.对于CMD&#xff0c;如果不想显示&#xff0c;而是使用交互界面&#xff1a;docker run -ti --rm --name test2 busybox:v5 sh 2.对于CMD&#xff0c;一个交互界面只可以使用一个&#xff0c;如果想多次使用CMD&#xff0c;则用ENTR…

基于Python Django的人脸识别上课考勤系统(附源码,部署)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

基于python实现的疫情数据可视化分析系统

基于python实现的疫情数据可视化分析系统 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat 系统功能实现 总体设计 系统实现 系统功能模块 系统首页可以查看首页、疫情信息、核酸检测、新闻资讯、个人中心、后…

(十 八)趣学设计模式 之 观察者模式!

目录 一、 啥是观察者模式&#xff1f;二、 为什么要用观察者模式&#xff1f;三、 观察者模式的实现方式四、 观察者模式的优缺点五、 观察者模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;…

Spring Boot 缓存最佳实践:从基础到生产的完整指南

Spring Boot 缓存最佳实践&#xff1a;从基础到生产的完整指南 引言 在现代分布式系统中&#xff0c;缓存是提升系统性能的银弹。Spring Boot 通过 spring-boot-starter-cache​ 模块提供了开箱即用的缓存抽象&#xff0c;但如何根据业务需求实现灵活、可靠的缓存方案&#xf…

苹果Siri升级遇阻,国行iPhone或将引入阿里、百度AI自救

AI整合进展缓慢 苹果正加速将生成式AI技术整合至Siri&#xff0c;但内部消息称其底层技术研发落后于竞争对手&#xff0c;进展未达预期。 国行iPhone将引入双AI模型 苹果计划在2025年中期为国行iPhone引入AI功能&#xff0c;目前已敲定与 阿里巴巴、百度 合作&#xff0c;用户…

阿里推出全新推理模型(因果语言模型),仅1/20参数媲美DeepSeek R1

阿里Qwen 团队正式发布了他们最新的研究成果——QwQ-32B大语言模型&#xff01;这款模型不仅名字萌萌哒(QwQ)&#xff0c;实力更是不容小觑&#xff01;&#x1f60e; QwQ-32B 已在 Hugging Face 和 ModelScope 开源&#xff0c;采用了 Apache 2.0 开源协议。大家可通过 Qwen C…

TomcatServlet

https://www.bilibili.com/video/BV1UN411x7xe tomcat tomcat 架构图&#xff0c;与 jre&#xff0c;应用程序之前的关系 安装使用 tomcat 10 开始&#xff0c;api 从 javax.* 转为使用 jakarta.*&#xff0c;需要至少使用 jdk 11 cmd 中默认 gbk 编码&#xff0c;解决控制…