Linux 硬链接和软链接怎么区分使用?

一、什么是硬链接和软链接

硬链接

在Linux操作系统中,硬链接相当于存储在硬盘驱动器中的文件,它实际上引用或指向硬盘驱动器上的某个点。硬链接是原始文件的镜像副本。
硬链接与软链接的区别在于,删除原始文件不会影响硬链接,但会使软链接无法操作。

可以将硬链接视为现有文件的附加名称。硬链接是指链接两个或多个具有相同inode的文件名。只能为位于同一文件系统或分区上的目录和文件创建硬链接。一个文件可以有一个或多个硬链接。

硬链接作为所选文件的副本(镜像)。它访问原始文件中可用的数据。如果先前选择的文件被删除,指向该文件的硬链接仍将包含该文件的数据。

简单来说就是:硬链接可视作指针,指向硬盘上的数据位置,即如果源文件内容修改了,则硬链接文件的内容也会被修改。

文件副本是复制源文件的所有内容,此为与硬链接的不同之处。

软链接

软链接,也称为符号链接,是一种文件类型,它作为对文件系统中另一个文件或目录的引用。它类似于Windows操作系统中的快捷方式,因为它允许从不同位置访问文件或目录,而无需创建副本。符号链接对于组织文件很有用,也可以更容易地访问经常使用的文件或目录。与硬链接不同,符号链接可以指向不同分区或文件系统上的文件或目录。

软链接是一种特殊的文件,它实际上是一个文本文件,其中包含有另一文件的路径信息。软链接文件的内容是另一文件的路径名。软链接文件可以看作是另一个文件名,它允许用户创建指向文件系统中的文件或目录的链接。软链接文件可以跨文件系统边界,因为它只包含路径信息,而不包含实际的文件数据。

软链接与硬链接的区别在于,软链接文件的内容是另一文件的路径名,而硬链接文件的内容是另一文件的inode。软链接文件可以跨文件系统边界,而硬链接文件只能在同一文件系统中。

软链接的优点是可以跨文件系统边界,而硬链接的优点是可以减少磁盘空间占用。

二、硬链接与软链接的区别

对比项硬链接软链接
索引节点采用相同的索引节点号采用不同的索引节点号
目录超级用户可以对目录作硬链接不限制
文件系统不能跨文件系统可以跨文件系统
数据原始文件中存在的数据在硬链接中仍然可用软链接只指向文件名,不保留文件的数据。
原文件删除如果原始文件被删除,该链接仍然有效如果原始文件被删除,该链接将不起作用
速度硬链接相对更快软链接相对较慢
指针指向硬盘中的数据位置指向文件名

三、什么时候使用硬链接或软链接

硬链接

  • 多个文件共享相同的inode,可以减少磁盘空间占用。
  • 允许多个文件名指向同一文件,可以实现文件重命名。
  • 允许文件权限的修改。

软链接

  • 允许多个文件名指向同一文件,可以实现文件重命名。
  • 允许跨文件系统边界。
  • 软链接可以指向不存在的文件。

软链接通常足以让普通用户在大多数情况下创建链接。它们可用于跨文件系统、分区和各种硬盘驱动器上链接文件和目录。但是,当涉及到对引用对象进行更改(例如移动和删除它)时,软链接不如硬链接灵活。

硬链接通常可以链接文件,而不是目录或文件夹。由于inode编号只能在分区内管理,所以硬链接只能连接单个分区内的文件。然而,现代Linux系统通常包含位于不同硬盘驱动器和分区上的各种文件系统。

硬链接具有优势,特别是在备份方面。可以对原始文件进行替代访问,同时节省空间并提高数据安全性。

四、怎么创建硬链接和软链接

使用 ln 命令来创建

常用选项

  • -b :创建链接时对存在的文件制作备份

  • -f, --force :强制覆盖已存在的链接

  • -i, --interactive :强制覆盖前询问

  • -s, --symbolic :创建软链接

  • -t, --target-directory=[DIRECTORY] :指定创建链接的目标目录

  • -S, --suffix=[SUFFIX] :指定备份文件的后缀,默认是 ~

  • -v, --verbose :打印debug信息

  • --help :打印帮助信息

  • --version :打印版本信息

命令实例

  • 创建硬链接
ln file.txt file_hard_link.txtls -il file_hard_link.txt 查看文件属性如下所示:47924514 -rw-r--r--  2 user  staff  8  4 13 10:20 file_hard_link.txtls -il file.txt 查看文件属性如下:47924514 -rw-r--r--  2 user  staff  8  4 13 10:20 file.txtls -i 表示查看文件的索引节点,此时显示两个文件的索引节点都为47924514,即表示两个文件指向相同的硬盘数据位置。
  • 跨目录创建硬链接
ln /videos/video.mp4 /home/abc/Desktop/hard_link_to_video_file
  • 创建软链接链到文件
ln -s file.txt file_soft_link.txtls -l file_soft_link.txt 查看文件属性如下所示:lrwxr-xr-x  1 user  staff  10  4 13 10:20 file_soft_link.txt -> file.txtlrwxr-xr-x,前面的l代表此文件是软链接文件,后面的箭头表示此文件指向file.txt
  • 创建软链接链到目录
ln -s dir dir_soft_link
  • 创建软链接链到其他目录
ln -s ~/videos /tmp/video
  • 删除软链接
rm file_soft_link.txt或:unlink file_soft_link.txt
  • 创建软链接的备份
ln -sb file filt_soft_link此时会生成 file_soft_link~ ,~ 此处为备份文件的后缀
  • 强制覆盖已创建的软链接
ln -sf file file_soft_link
  • 强制覆盖软链接前询问
ln -si file file_soft_link

五、man pages

在这里插入图片描述

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

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

相关文章

AI图书推荐:如何在课堂上使用ChatGPT 进行教育

ChatGPT是一款强大的新型人工智能,已向公众免费开放。现在,各级别的教师、教授和指导员都能利用这款革命性新技术的力量来提升教育体验。 本书提供了一个易于理解的ChatGPT解释,并且更重要的是,详述了如何在课堂上以多种不同方式…

【攻防世界】supersqli(堆叠注入)

进入题目环境,有输入框与注入参数,推测类型为SQL注入: 测试--注入类型为数字型还是字符型,构造payload:?inject1 or 12 并提交: 发现页面依然正常,说明注入类型为字符型,则继续检查…

ML在骨科手术术前、书中、术后方法应用综述【含数据集】

达芬奇V手术机器人 近年来,人工智能(AI)彻底改变了人们的生活。人工智能早就在外科领域取得了突破性进展。然而,人工智能在骨科中的应用研究尚处于探索阶段。 本文综述了近年来深度学习和机器学习应用于骨科图像检测的最新成果,描述了其贡献、优势和不足。以及未来每项研究…

用AI提升儿童英语口语:和小猪佩奇对话

小孩子大部分都是喜欢动画片的,如果能让动画片中的角色和他们进行口语对话,应该可以极大的激发他们英语学习兴趣。 下面,以小猪佩奇为例来说明如何利用AI来创建一个虚拟的英语口语陪练小猪佩奇角色。 在kimichat对话框中键入提示词&#xf…

360极速浏览器启动外部应用设置记住选择后无法启动应用

之前学习并测试过通过网页调用本地应用的路线,原理是在注册表中注册能在网页中调用的命令,然后在网页中通过命令调用本地应用。测试过程中发现使用版本为12.0.1212.0的360极速浏览器的极速模式下启动外部应用时,每次都会出现启动外部应用的提…

vue3 vueUse 连接蓝牙

目录 vueuse安装: useBluetooth: 调用蓝牙API 扫描周期设备 选择设备配对 连接成功 vue3的网页项目连接电脑或者手机上的蓝牙设备,使用vueUse库,可以快速检查连接蓝牙设备。 vueUse库使用参考: VueUse工具库 常用api-CSDN…

【spring】AOP切面注解学习(二)

文接上篇&#xff1a;【spring】AOP切面注解学习&#xff08;一&#xff09; AOP切面注解测试示例代码 示例代码 一 maven的pom文件导入 <dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId></depende…

itop4412内核编译_编译自定义函数到内核

我的itop4412开发板是半路捡的&#xff0c;所以没办法加他们的售后群&#xff0c;遇到的问题只好一点点记录吧 内核驱动编译 在日常工作过程中&#xff0c;编写内核程序可能机会不多&#xff0c;但是将厂商提供的内核源码编译到固件中&#xff0c;这个技能还是必须掌握的。 i…

Redis入门到通关之String命令

文章目录 ⛄1 String 介绍⛄2 命令⛄3 对应 RedisTemplate API❄️❄️ 3.1 添加缓存❄️❄️ 3.2 设置过期时间(单独设置)❄️❄️ 3.3 获取缓存值❄️❄️ 3.4 删除key❄️❄️ 3.5 顺序递增❄️❄️ 3.6 顺序递减 ⛄4 以下是一些常用的API⛄5 应用场景 ⛄1 String 介绍 Stri…

Asterisk 21.2.0编译安装经常遇到的问题和解决办法之卸载pjsip

目录 会安装也要会卸载make uninstallldconfig 会安装也要会卸载 有些人就只会装。 最常见的场景就是需要卸载之前版本的pjproject。 一般来说&#xff0c;其他版本的 pjproject 会被作为静态链接库安装。这些库跟 Asterisk可能不兼容。 因此&#xff0c;在安装正确版本的pjpro…

连锁收银系统哪个好用 国内三大连锁收银系统评比

随着数字化管理趋势下互联网技术的不断发展革新&#xff0c;互联网技术&#xff0c;以及不断升级优化传统行业渠道模式&#xff0c;线上线下结合的电子商务模式正逐渐成为企业发展的趋势。而门店管理系统也在越来越多的企业应用。但市场上连锁店管理系统品牌诸多&#xff0c;很…

生产事故:线程管理不善诱发P0故障

背景 处于业务诉求&#xff0c;需要建立一个统一的调度平台&#xff0c;最终是基于 Dolphinscheduler 的 V1.3.6 版本去做二次开发。在平台调研建立时&#xff0c;这个版本是最新的版本 命运之轮开始转动 事故 表象 上班后业务部门反馈工作流阻塞&#xff0c;登录系统发现大…

Java-博客系统(前后端交互)

目录 前言 博客系统基本情况 1 创建项目&#xff0c;引入依赖 2 数据库设计 2.1 分析 2.2 建库建表 3 封装数据库 3.1 在java目录下创建DBUtil类&#xff0c;通过这个类对数据库进行封装 3.2 在java目录下创建实体类&#xff08;博客类Blog&#xff09; 3.2 在java目录下创建…

3D场景编辑方法——CustomNeRF

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;3D场景编辑方法——CustomNeRF1、研究背景2、提出方法3、CustomNeRF3.1、整体框架步骤3.2、对特定问题的解决 4、实验结果5、总结…

组合模式:构建树形对象结构的设计艺术

在软件开发中&#xff0c;组合模式是一种结构型设计模式&#xff0c;用于表示对象的部分-整体层次结构。通过使单个对象和组合对象具有相同的接口&#xff0c;这种模式允许客户端以统一的方式处理单个对象和组合对象。本文将详细介绍组合模式的定义、实现、应用场景以及优缺点。…

2024HW--->入侵排查

在蓝队的面试中&#xff0c;我们有可能会被问到对可能被入侵的机器&#xff0c;怎么样去排查&#xff0c;下面就来总结一下 1.Windows入侵排查 1.检查系统账号的安全 检测系统账号&#xff0c;其实最重要的就是一个点 "查看服务器是否存在可疑账号、新增账号。" 最…

蓝桥杯备赛:考前注意事项

考前注意事项 1、DevCpp添加c11支持 点击 工具 - 编译选项 中添加&#xff1a; -stdc112、万能头文件 #include <bits/stdc.h>万能头文件的缺陷&#xff1a;y1 变量 在<cmath>中用过了y1变量。 #include <bits/stdc.h> using namespace std;// 错误示例 …

院子里种点什么树风水好呢?

植物本身是一个丰富的生活领域&#xff0c;有着强烈的视觉暗示。其实&#xff0c;在家中养植物&#xff0c;是有许多好处的&#xff0c;它不仅能够装点庭院的环境让家更美丽&#xff0c;还能调节室内的空气质量&#xff0c;对家人的运势也有着非常大的帮助。 不过&#xff0c;并…

你的高佣副业不二之选,开始流量卡推广,一文看懂号卡推广

在这个信息化的时代&#xff0c;网络已成为人们生活中不可或缺的一部分。然而&#xff0c;在享受着便捷与高效的同时&#xff0c;我们也必须面对一个现实问题&#xff0c;也就是高昂的流量费用。为了解决这一困扰广大用户的痛点&#xff0c;我们今天带来了一个极具吸引力的机会…

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块&#xff0c;首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中&#xff1a; const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…