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.hqwc.cn/news/616749.html

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

相关文章

基于SpringBoot实现的在线拍卖系统

系统开发环境 编程语言:Java数据库:MySQL容器:Tomcat工具:IDEA/Ecilpse、Navicat、Maven 系统实现 管理员功能模块 首页 修改密码 用户管理 商品类型管理 拍卖商品 竞拍公告 轮播图 历史竞拍管理 竞拍订单管理 留言板管理 用户…

主干网络篇 | YOLOv8更换主干网络之VanillaNet | 华为方舟实验室提出全新轻量级骨干架构

前言:Hello大家好,我是小哥谈。华为方舟实验室所提出的VanillaNet架构克服了固有复杂性的挑战,使其成为资源受限环境的理想选择。其易于理解和高度简化的架构为高效部署开辟了新的可能性。广泛的实验表明,VanillaNet提供的性能与著名的深度神经网络和vision transformers相…

【Linux】虚拟化技术docker搭建SuitoCRM系统及汉化

CRM系统 CRM(Customer Relationship Management,客户关系管理)系统是一种用于管理和优化企业与客户关系的软件工具。在商业竞争激烈的现代社会中,CRM系统已成为许多企业提高销售、增强客户满意度和实现持续增长的重要工具。 搭建…

【排序 贪心】3107. 使数组中位数等于 K 的最少操作数

算法可以发掘本质,如: 一,若干师傅和徒弟互有好感,有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二,有无限多1X2和2X1的骨牌,某个棋盘若干格子坏了,如何在没有坏…

【Git教程】(九)版本标签 —— 创建、查看标签,标签的散列值,将标签添加到日志输出中,判断标签是否包含特定的提交 ~

Git教程 版本标签(tag) 1️⃣ 创建标签2️⃣ 查看存在的标签3️⃣ 标签的散列值4️⃣ 将标签添加到日志输出中5️⃣ 判断tag是否包含特定的提交🌾 总结 大多数项目都是用 1.7.3.2和 “ gingerbread” 这样的数字或名称来标识软件版本的。在 …

CS学习(九)—— 分支实现

if-else 18&#xff1a;若y<x&#xff0c;跳转L2 22&#xff1a;否则&#xff0c;跳转L3。 goto 可见&#xff0c;与if-else类似。但是用goto很low。 条件表达式 又是与if类似&#xff0c;那有没有区别&#xff1f; 当然&#xff0c;条件表达式两个式子都会计算&…

[C++][算法基础]Dijkstra求最短路径I(稠密图)

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;所有边权均为正值。 请你求出 1 号点到 n 号点的最短距离&#xff0c;如果无法从 1 号点走到 n 号点&#xff0c;则输出 −1。 输入格式 第一行包含整数 n 和 m。 接下来 m 行每行包含三个整…

Linux的学习之路:9、冯诺依曼与进程(1)

摘要 本章主要是说一下冯诺依曼体系结构和进程的一部分东西。 目录 摘要 一、冯诺依曼体系结构 二、操作系统的概念 三、设计OS的目的 四、管理 五、进程的基本概念 六、PCB 七、在Linux环境下查看进程 八、使用代码创建进程 九、思维导图 一、冯诺依曼体系结构 如…

【新版】系统架构设计师 - 知识点 - 面向对象开发方法

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 知识点 - 面向对象开发方法面向对象开发方法面向对象的分析需求模型分析模型 面向对象的设计 用例模型关系、UML事务关系、类的关系 架构 - 知识点 - 面向对象开发方法 面向对象开发方法 分析阶段…

嵌入式实时操作系统的调度机制与优化

大家好&#xff0c;今天给大家介绍嵌入式实时操作系统的调度机制与优化&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 嵌入式实时操作系统的调度机制与优化 一、引言 嵌入式实…

SpringBoot3整合Mybatis plus

Java版本&#xff1a;17 Spring Boot版本&#xff1a;3.1.10 Mybatis plus版本&#xff1a;3.5.5 源码地址&#xff1a;Gitee仓库 01 创建我们的项目工程 首先&#xff0c;我们创建一个maven工程spring-boot3-demo&#xff0c;pom文件配置如下。 这里我们将spring-boot-start…

【C Hash Map from Redis】

将Redis源码中的哈希表底层逻辑提取&#xff0c;并进行最小demo级测试将对应文件抽出&#xff0c;通过宏替换等方式保证源码编译通过main.c编写测试demo &#xff0c;注册哈希函数和值比较函数&#xff08;必选项&#xff09; /* Hash Tables Implementation.** This file imp…