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.txt

ls -il file_hard_link.txt 查看文件属性如下所示:

47924514 -rw-r--r--  2 user  staff  8  4 13 10:20 file_hard_link.txt

ls -il file.txt 查看文件属性如下:

47924514 -rw-r--r--  2 user  staff  8  4 13 10:20 file.txt

ls -i 表示查看文件的索引节点,此时显示两个文件的索引节点都为47924514,即表示两个文件指向相同的硬盘数据位置。
  • 跨目录创建硬链接
ln /videos/video.mp4 /home/abc/Desktop/hard_link_to_video_file
  • 创建软链接链到文件
ln -s file.txt file_soft_link.txt

ls -l file_soft_link.txt 查看文件属性如下所示:

lrwxr-xr-x  1 user  staff  10  4 13 10:20 file_soft_link.txt -> file.txt

lrwxr-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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

乐趣Python——办公魔法:Word文件自动化

嘿,朋友们!在这个办公小课堂中,我将为大家揭开一个神奇的秘密:Word文件自动化处理! 通过这种魔法般的方式,我们可以大大提高办公效率,减少重复性工作。而Python作为我们的助手,将展现…

AI大赏-一些关键词的出图效果展示

AI绘画 AI 绘画是利用人工智能技术来生成、转换或增强数字图像和艺术作品的过程。这种技术可应用于各种领域,包括数字媒体、游戏开发、电影制作、设计、视觉艺术等。 具体领域有图像生成、图像转换、图像增强、艺术创作,受影响比较到的是数字媒体&…

【嵌入式基础知识学习】AD/DA—数模/模数转换

AD/DA—数模/模数转换概念 数字电路只能处理二进制数字信号,而声音、温度、速度和光线等都是模拟量,利用相应的传感器(如声音用话筒)可以将它们转换成模拟信号,然后由A/D转换器将它们转换成二进制数字信号&#xff0c…

C语言: 字符串函数(下)

片头 在上一篇中,我们介绍了字符串函数。在这一篇章中,我们将继续学习字符串函数,准备好了吗?开始咯! 1.strncpy函数 1.1 strncpy函数的用法 strncpy是C语言中的一个字符串处理函数,它用于将一个字符串的一部分内容…

Linux进阶篇:进程检测和控制:ps命令详细讲解

Linux进程检测和控制:ps命令详细讲解 一、ps命令介绍 Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信…

【WSL】在WIN11安装并使用Linux子系统(Ubuntu)

前言: 最近买了4060Ti 16G,可以尝试在本地实验大模型。一开始尝试使用Vmware搞Linux,发现没有办法加载GPU(或者另外有办法没找到)。所以只剩下了两条路:要么搞双系统,要么使用WSL(W…

TypeScript 忽略红色波浪线

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

JavaScript:事件循环机制(同步、异步)(单、多线程)

事件循环机制: 多进程和多线程 1. 进程:程序的一次执行, 它占有一片独有的内存空间 2. 线程: CPU的基本调度单位, 是程序执行的一个完整流程 3. 进程与线程 * 一个进程中一般至少有一个运行的线程: 主线程 * 一个进程中也可以同时运行多个线程, 我们…

论文笔记:A Simple and Effective Pruning Approach for Large Language Models

iclr 2024 reviewer 评分 5668 1 intro 大模型网络剪枝的paper 在努力保持性能的同时,舍弃网络权重的一个子集现有方法 要么需要重新训练 这对于十亿级别的LLMs来说往往不现实要么需要解决依赖于二阶信息的权重重建问题 这同样可能带来高昂的计算成本——>引入…

关于ASP.NET Core WebSocket实现集群的思考

前言 提到WebSocket相信大家都听说过,它的初衷是为了解决客户端浏览器与服务端进行双向通信,是在单个TCP连接上进行全双工通讯的协议。在没有WebSocket之前只能通过浏览器到服务端的请求应答模式比如轮询,来实现服务端的变更响应到客户端&…

边缘计算平台原理、关键功能以及技术优势

1、什么是边缘计算及其工作原理? 边缘计算是一种分布式计算模型,它将数据处理和存储靠近数据源头和最终用户的边缘设备上,从而减少了数据传输和延迟。边缘计算旨在解决云计算模型所面临的问题,例如延迟高、带宽瓶颈和安全性等问题…

[CSS]使用方式+样式属性

层叠样式表(Cascading Style Sheets),与HTML一样,也是一种标记语言,其作用就是给HTML页面标签添加各种样式,定义网页的显示效果,将网页内容和显示样式进行分离,提高了显示功能。简单…

[MAUI]集成富文本编辑器Editor.js至.NET MAUI Blazor项目

文章目录 获取资源从源码构建从CDN获取获取扩展插件 创建项目创建控件创建Blazor组件初始化保存销毁编写渲染逻辑 实现只读/编辑功能切换模式获取只读模式状态响应切换事件 实现明/暗主题切换项目地址 Editor.js 是一个基于 Web 的所见即所得富文本编辑器,它由CodeX…

Ja-netfilter(idea激活码破解原理)分析

Ja-netfilter(idea破解)分析 简介 ja-netfilter是一款可以破解jetbrainsIDE系列的javaagent jar 包。 原理简介 通过javaagent创造修改字节码的时机。通过asm修改相关类,达到hook特定方法的作用。主要依赖power(rsa方法hook&a…

设计模式-代理模式(Proxy)

1. 概念 代理模式(Proxy Pattern)是程序设计中的一种结构型设计模式。它为一个对象提供一个代理对象,并由代理对象控制对该对象的访问。 2. 原理结构图 抽象角色(Subject):这是一个接口或抽象类&#xff0…

觉得自己有讨好型人格,怎么办?

生活中,许多人可能有过这样的困扰: 不敢拒绝别人提出的要求,过于草率地作出承诺,等到发现自己无力兑现承诺,又不敢去面对现实、向别人道出真相,只好编造理由和借口来逃避承诺。 跟别人意见不一时&#xff0…

解决jenkins运行sh报process apparently never started in XXX

个人记录 问题 process apparently never started in /var/jenkins_home/workspace/ks-springboot_mastertmp/durable-bbfe5f99(running Jenkins temporarily with -Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICStrue might make the problem cl…

Linux 中 CPU 利用率是如何算出来的?

在线上服务器观察线上服务运行状态的时候,绝大多数人都是喜欢先用 top 命令看看当前系统的整体 cpu 利用率。例如,随手拿来的一台机器,top 命令显示的利用率信息如下: 这个输出结果说简单也简单,说复杂也不是那么容易就…

【Java基础题型】矩阵的对角线求和

一、题目-矩阵 求一个33矩阵对角线元素之和。 输入格式 矩阵 输出格式 主对角线 副对角线 元素和 样例输入 1 2 3 1 1 1 3 2 1 样例输出 3 7 二、参考的知识 这里给大家送点英语单词,记得学习: p r i m a r y. adj.主要的;初…

论文详解:字节万卡集群训练大模型,算力利用率达55.2%

原论文链接:https://arxiv.org/abs/2402.15627 摘要 我们介绍了MegaScale的设计、实现和工程经验,这是一个用于训练大语言模型(LLMs)的生产系统,其规模超过10,000个GPU。在这个规模上训练LLMs带来了前所未有的训练效率…