Linux中的硬链接和软链接

Linux中的硬链接和软链接

节选自南大蒋炎岩老师操作系统网络课程笔记:(2021) 24 [持久化] 文件系统API

硬(hard)链接

UNIX文件指针

在UNIX中,文件和目录完全不是同一个概念,虽然我们平时看着它们仿佛并列地躺在某个文件夹下。但实际上,目录是树状结构组织的,而文件,却是每个目录指向某个文件的指针。并且,每个文件都有一个编号,可能会有多个目录下的多个指针都指向同一个编号的文件。它们虽然存在于不同的目录下,甚至名称也不同,但是同一个编号的文件是完全相同的,修改也是同步的。如下图所示:

在这里插入图片描述

我们可以做这样的测试:

创建测试目录并在其中的a.txt写入Hello World!

mkdir test && cd test && touch a.txt
vim a.txt # 写入 Hello World!

创建a.txt的硬链接b.txt

ln a.txt b.txt

我们查看两个文件的内容,输出显示都是同样的Hello World:

cat *.txt
# 输出:
# Hello World!
# Hello World!

这时,我们修改b.txt的内容为Hello World! Changed~,再查看两个文件的内容:

vim b.txt		# 更改为 Hello World! Changed~
cat *.txt
# 输出:
# Hello World! Changed~
# Hello World! Changed~

结果两个文件都被修改了,这就是硬链接,我们可以通过-i参数查看文件的编号:

ls -i
# 输出:
# 8593746 a.txt  8593746 b.txt

可以看到,两个文件其实是同一个编号的文件的不同链接。即硬链接的图示如下:在这里插入图片描述

硬链接

注意

  • 目录中仅存储指向文件数据的指针
  • 允许一个文件被多个目录引用
  • 不能链接目录 ❌
  • 不能跨文件系统 ❌

小知识:其实所有的文件都是硬连接 (ls -i 查看)

  • 删除的系统调用称为 “unlink” (引用计数)

应用场景

可以给文件起别名,同步,省空间。

需求:系统中可能有同一个运行库的多个版本

  • libc-2.27.so, libc-2.26.so, …
  • 还需要一个 “当前版本的 libc”
    • 程序需要链接 “libc.so.6
    • 能否避免文件的一份拷贝?

软(symbolic)链接

软链接:在文件里存储一个 “跳转提示”,相当于”快捷方式“。

  • 软链接也是一个文件
    • 当引用这个文件时,去找另一个文件
    • 另一个文件的绝对/相对路径以文本形式存储在文件里
    • 可以跨文件系统、可以链接目录、……好处多多
    • 甚至,符号链接可以指向一个暂时不存在的文件或目录,只要这个不存在文件或目录将来某天存在了,这个符号链接就会生效

ln -s 创建软链接,用的是symlink 系统调用。现在系统中/lib下的共享库,通常都是软链接。

我们接着上面硬链接的例子来看一下二者的区别:

再在测试目录下创建a.txt的软链接c.txt

ln -s a.txt c.txt

我们用-li参数查看测试目录中的三个文件:

ls -li
# 输出
# 8593746 -rw-rw-r-- 2 ps ps 22 10月  1 22:14 a.txt
# 8593746 -rw-rw-r-- 2 ps ps 22 10月  1 22:14 b.txt
# 8593742 lrwxrwxrwx 1 ps ps  5 10月  1 22:35 c.txt -> a.txt

在这里,b,c分别是a的硬、软链接。可以看到,a和c的文件编号是不一样的,因为它们是软链接,并且可以看到,c作为a的软链接,会有一个箭头指向a。但是,它们的修改仍然是同步的,因为我们在试图修改c的时候,系统会顺着上面输出的软链接箭头去寻找,直到找到一个真实的文件或者目录。我们还是来试一下:

vim c.txt # 修改为Hello World! Changed~ Soft~
cat *.txt
# 输出:
# Hello World! Changed~ Soft~
# Hello World! Changed~ Soft~
# Hello World! Changed~ Soft~

与预期一致。此时测试目录下的链接关系应该如下图所示:
在这里插入图片描述

软链接可能带来的麻烦

软链接可以随意创建 (当前可能不合法;但未来可能合法),操作系统在处理软链接时会执行路径解析,,允许多次间接链接,会有意想不到的复杂性 ,a → b → c (递归解析)。可以创建软连接的硬链接 (因为软链接也是文件),通过ls -i 可以看到。

符号链接成环?ln -s . a。所有处理符号链接的程序 (tree, find, …) 都要考虑递归的情况。它们默认遇到软链接就跳过,如果加上-L参数强制使它们考虑软链接的话,它们也会很小心的检测成环和递归的情况并适时退出。

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

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

相关文章

计算机win10开机音乐,大师传授win10系统电脑开机总是自动播放音乐的方案

今天小编分享一下win10系统电脑开机总是自动播放音乐问题的处理方法,在操作win10电脑的过程中常常不知道怎么去解决win10系统电脑开机总是自动播放音乐的问题,有什么好的方法去处理win10系统电脑开机总是自动播放音乐呢?今天本站小编教您怎么…

Linux中的tty、pts、pty等概念辨析

Linux中的tty、pts、pty等概念辨析 基本概念 tty、pty、pts、ptmx tty(终端设备的统称):tty一词源于Teletypes,或teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东…

(2021) 25 [持久化] 文件系统实现:FAT和UNIX文件系统

(2021) 25 [持久化] 文件系统实现:FAT和UNIX文件系统 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频:https://www.bilibili.com/video/BV1HN41197Ko?p25 讲义:http://jyywiki.cn/OS/2021/slides/15.slides#/ 背景 回顾 应用眼中的文件…

用计算机模拟地球诞生,计算机模拟显示早期金星或像地球一样宜居

虽然金星的绰号是“地球的邪恶孪生化身”,但它和地球上的一切都不同:灼热、干燥并且被有毒烟云笼罩。不过,就在10亿或20亿年前,这两个任性的“兄弟”可能更加相似。最新的计算机模拟显示,早期的金星看上去和地球很像&a…

海南大学计算机原理,海南大学微机原理课件 第一章 计算机基础知识

第一章计算机基础知识数 制1.1一.计算机使用的数制及其相互转换 十进制(D)、二进制(B)、八进制(O)和十六进制(H). 数制中用少量数码按次序排列成数位,并按由低到高的进位方式进行计 数。(数码的个数称为基数) D---0,1,2,3,4,5,6,7,8,9------数码十个(基为10)-------…

pe能用的固态硬盘测试软件,通用pe工具箱教你如何让硬盘4K对齐

昨天小编教大家如何查看电脑硬盘是否4K对齐,马上就有读者告诉小编,查看电脑硬盘是否4K对齐的方法学到了,那么我使用的固态硬盘如何做到4K对齐呢?问的好啊!现如今用户对电脑硬件的要求是越来越高。很多用户都不仅仅满足…

[2020-ECCV]PIPAL-a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration论文简析

[2020-ECCV] PIPAL: a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration 论文简析 论文:https://arxiv.org/abs/2007.12142 代码及数据集:https://github.com/HaomingCai/PIPAL-dataset 概述 本文认为随着图像重建&…

郫都区计算机老师周俊老师,教师节,带你走进郫都教师背后的故事

点击“郫都教育”关注我们:)有这样一群人“师者,所以传道,授业,解惑也”是他们奉献一生的事业“随风潜入夜,润物细无声”是他们培养英才的责任“春蚕到死丝方尽,蜡炬成灰泪始干”是他们追求终生的信仰值此第…

(2021) 18 [代码讲解] 可执行文件

(2021) 18 [代码讲解] 可执行文件 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频:https://www.bilibili.com/video/BV1HN41197Ko?p18 讲义:http://jyywiki.cn/OS/2021/slides/C8.slides#/ 背景 回顾 程序 状态机 状态机执行 状态机上的路径状…

如何学习计算机思维,刘康平:为什么我们每个人都应该学习计算思维?

不久前,微软亚洲研究院资深学术合作经理刘康平应邀在“造就”做了演讲,以下为演讲节选,由“造就”授权转载。刘康平 微软亚洲研究院资深学术合作经理以中国象棋为例,在这样一个棋局上,你怎么用最快的方式找到「将」和「…

链接与加载-NJU-JYY

(2021) 19 [代码讲解] 从零实现动态加载 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频:https://www.bilibili.com/video/BV1N741177F5?p15 讲义:http://jyywiki.cn/OS/2021/slides/C9.slides#/ 背景 回顾: ELF可执行文件 只要能完成…

饥荒联机自建服务器有什么用,联机版饥荒使用专用服务器的好处 | 手游网游页游攻略大全...

发布时间:2016-02-15存档保存位置是?很多玩家对此并不是很了解,不过别着急哟,下面99单机小编就为你带来高玩分享的相关技巧心得攻略,希望大家能喜欢. 联机版的存档与单机版是不同的,由于联机版饥荒建 ...标签:游戏资讯 攻略秘籍发布时间:201…

(2021) 26 [持久化] 持久数据的可靠性:RAID和journaling

(2021) 26 [持久化] 持久数据的可靠性:RAID和journaling 南京大学操作系统课蒋炎岩老师网络课程笔记。 视频:https://www.bilibili.com/video/BV1HN41197Ko?p26 讲义:http://jyywiki.cn/OS/2021/slides/16.slides#/ 背景 回顾 文件系统 …

win10无法检验服务器出示的ssl证书,win10系统网站启用ssL安全证书的操作方法

win10系统网站启用ssL安全证书的操作方法?很多win10用户在使用电脑的时候,会发现win10系统网站启用ssL安全证书的的现象,根据小编的调查并不是所有的朋友都知道win10系统网站启用ssL安全证书的的问题怎么解决,不会的朋友也不用担心&#xff…

Nplayer本地文件拷到服务器,手把手教你简易NAS构建,手机/平板/智能电视随意调取,家庭存储云共享,有了自己的网络云盘后再也不用担心容量不够了!...

之前嫌键盘侠烦,写这些也没意义所以把账号注销了文章删除了,现在想了想我抗吧12级老蛆还喷不过这帮小兔崽子?换了skt.ruo秽土转生,求喷子和我在各评论对线。特别是匿名dog见一个怼死一个。下面是之前号写的内容原文 -#简介NAS全称…

gdb 入门

gdb 入门 简介 gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具。 一般来说,GDB主要帮助你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点…

Linux下的CUDA多版本管理

Linux下的CUDA多版本管理 关于CUDA、cuDNN等的简介和安装可参考:显卡、显卡驱动、CUDA、CUDA Toolkit、cuDNN 梳理。 CUDA多版本 有时我们会在一台机器上同时看到多个版本的CUDA,比如nvcc -V和nvidia-smi的输出就可能会不同: 在我们实验室…

ONNX初探

ONNX初探 转载自:https://blog.csdn.net/just_sort/article/details/112912272 0x0. 背景 最近看了一些ONNX的资料,一个最大的感受就是这些资料太凌乱了。大多数都是在介绍ONNX模型转换中碰到的坑点以及解决办法。很少有文章可以系统的介绍ONNX的背景…

服务器修改地址,服务器修改管理地址

服务器修改管理地址 内容精选换一换在弹性云服务器上安装完成后输入公网IP,无法连接目的虚拟机,端口无法访问工具。源端网络未连通目的端。目的端安全组未开放8084端口。目的端网络ACL禁用了8084端口。登录源端服务器后,在源端服务器中ping 目…

ONNX再探

ONNX再探 本文转自:https://blog.csdn.net/just_sort/article/details/113802330 这篇文章从多个角度探索了ONNX,从ONNX的导出到ONNX和Caffe的对比,以及使用ONNX遭遇的困难以及一些解决办法,另外还介绍了ONNXRuntime以及如何基于…