广告
返回顶部
首页 > 资讯 > 操作系统 >linux硬链接和软链接的示例分析
  • 692
分享到

linux硬链接和软链接的示例分析

2023-06-29 06:06:44 692人浏览 安东尼
摘要

这篇文章主要介绍linux硬链接和软链接的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言最近前端包管理器pnpm真的是太火了,大量的文章分析了pnpm的原理。了解之后,发现pnpm整个架构都是基于硬链接和

这篇文章主要介绍linux硬链接和软链接的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

前言

最近前端包管理器pnpm真的是太火了,大量的文章分析了pnpm的原理。了解之后,发现pnpm整个架构都是基于硬链接和软链接组织的,但我对这两个概念比较模糊,所以想研究一下。

众所周知,Unix/Linux系统中一切皆文件。可见,文件在Linux系统中非常重要。我们平常比较直观的对于文件的感受肯定是文件名和文件内容。但在Linux的文件系统中,除了文件名和文件内容,还有一个很重要的概念,就是inode

linux硬链接和软链接的示例分析

inode

维基百科这样描述inode:

The inode (index node) is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data.File-system object attributes may include metadata (times of last change,access, modification), as well as owner and permission data.

A directory is a list of inodes with their assigned names. The list includes an entry for itself, its parent, and each of its children.

意思就是:inode是类Unix文件系统中用来描述文件系统对象(比如文件或文件夹)的一种数据结构。它存储着文件的各种属性(最近一次inode变动的时间、最近一次访问的时间、最近一次修改的时间等元信息,以及权限信息等)。文件夹是一组inode,包括自身的入口、父节点的入口以及所有子节点。

其实,inode包含的内容不止上面这些,具体有:

  • 文件的字节数

  • 文件的User ID

  • 文件的Group ID

  • 文件的读、写、执行权限

  • 时间戳:ctime,inode上一次变动的时间;mtime,文件内容上一次变动的时间;atime,文件上一次打开的时间

  • 链接数,即有多少个文件名指向这个inode

  • 文件数据block的位置

Linux使用的ext2/ext3文件系统中,不同类型的数据存放在不同的区域。inode组成的inode table存放在一个位置,文件数据块则存在另外一个位置。

inode不包含文件名,文件名存放在文件夹信息的结构体里。文件名相当于inode的别名,便于我们管理和记忆。Linux系统对文件的操作都是通过inode做到的,当我们修改文件时,系统从文件夹的信息结构体里找到文件名对应的inode,再通过存储在inode中的文件数据block地址找到对应的硬盘位置进行读写操作。

linux硬链接和软链接的示例分析

硬链接

一般来说,inode与文件名、文件数据是一对一的关系,但我们可以通过shell命令让多个文件名指向同一个inode,这种就是硬链接(hard link)。

使用ln <origin> <destination>命令可以创建硬链接,如

ln test.txt test_hard.txt

对应nodejs的fs.link方法。

创建硬链接前,test.txt可以这样表示:

linux硬链接和软链接的示例分析

创建硬链接后:

linux硬链接和软链接的示例分析

可以看到,test_hard.txt的inode跟源文件test.txt使用的是同一个,只是现在链接数变成2了。

我们可以执行ls -li查看一下。

linux硬链接和软链接的示例分析

第一列是inode number,可以看到都是13029546,所以两个文件使用的是同一个inode。第二列是权限信息,第四列是拥有者,第六列是文件内容大小。可以看到,除了文件名不一样之外,硬链接创建的文件跟源文件的所有元信息完全一样。第三列表示链接数,可以看到,目前链接数为2。

由于硬链接文件和源文件使用同一个inode,并指向同一块文件数据,除文件名之外的所有信息都是一样的。所以这两个文件是等价的,可以说是互为硬链接文件。修改任意一个文件,可以看到另外一个文件的内容也会同步变化。

软链接

准确来说叫符号链接(symbolic link),一般又叫软链接(soft link)。与硬链接共用一个inode不同,软链接会创建新的inode,并指向源文件。可以理解软链接就是windows系统中的桌面快捷方式。

创建软链接的命令和硬链接很像,多了-s参数:ln -s <origin> <destination>:

ln -s test.txt test_symbolic.txt

对应的nodejs的fs.symlink方法。

创建软链接之后:

linux硬链接和软链接的示例分析

源文件inode的链接数还是1,创建了新的inode,软链接指向源文件。

执行ls -li看一下:

linux硬链接和软链接的示例分析

可以看到,软链接的inode number跟源文件的不一样,权限一列开头为小写L,表示软链,链接数为1,大小为8个字节。没错,软链文件也有大小,不过一般很小,毕竟只是一个快捷方式。

对比

文件重命名或文件移动

文件重命名和文件移动对于Linux系统来说都是文件绝对路径的更改。对硬链接来说,文件重命名或文件移动不会改变链接指向,而对软链接来说,文件重命名或文件移动则使链接断开,这时通过软链接修改文件内容时会重新创建一个新的inode,跟原文件名和文件数据块关联。

文件删除

rm命令或者nodejs的unlink其实是将inode的链接数减1。对于前文的硬链接,删除test_hard.txt使得inode1的链接数变成1,当链接数变成0时,系统就会释放掉这个inode,之后再创建的新文件就可以使用该inode的inode number了。这时没有inode指向文件数据block,所以文件找不到了。但实际上文件数据还存在硬盘中,所以经常能看到网上有一些帮助恢复误删的文件的工具。软链接inode链接数为1,删除软链接则系统释放该inode。

链接文件和文件夹

软链接可以链接文件和文件夹,但硬链接只能链接文件。

不同文件系统创建链接

软链接可以跨不同的文件系统创建,但是硬链接不行,因为硬链接是共用一个inode,而不同的文件系统有不同的inode table。

应用场景

硬链接

  • 文件备份:为了防止重要的文件被误删,文件备份是一种好的办法,但拷贝文件会带来磁盘空间的消耗。硬链接能不占用磁盘空间实现文件备份。

  • 文件共享:多人共同维护同一份文件时,可以通过硬链接的方式,在私人目录里创建硬链接,每个人的修改都能同步到源文件,但又避免某个人误删就丢掉了文件的问题。

  • 文件分类:不同的文件资源需要分类,比如某个电影即是的分类是外国、悬疑,那我们可以在外国的文件夹和悬疑的文件夹里分别创建硬链接,这样可以避免重复拷贝电影浪费磁盘空间。有人可能说,使用软链接不也可以吗?是的,但不太好。因为一旦源文件移动位置或者重命名,软链接就失效了。

软链接

  • 快捷方式:对于路径很深的文件,查找起来不太方便。利用软链接在桌面创建快捷方式,可以迅速打开并编辑文件。

  • 灵活切换程序版本:对于机器上同时存在多个版本的程序,可以通过更改软链接的指向,从而迅速切换程序版本。这里提到了python版本的切换可以这么做。

  • 动态库版本管理:不是很懂,具体可以看这里。

总结

Linux系统通过inode管理文件,inode存储着文件字节数、文件权限、链接数、数据block位置等信息。

硬链接与源文件共用inode,除了文件名不同,其他与源文件一样。不能对文件夹创建硬链接,不能对不同的文件系统的文件创建硬链接。

软链接类似于windows的快捷方式,有独立的inode。可以对文件夹或不同文件系统的文件创建软链接。

硬链接和软链接修改文件内容都会同步到源文件,因为本质上它们都是指向源文件的数据block。

以上是“linux硬链接和软链接的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux硬链接和软链接的示例分析

本文链接: https://www.lsjlt.com/news/323090.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux硬链接和软链接的示例分析
    这篇文章主要介绍linux硬链接和软链接的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言最近前端包管理器pnpm真的是太火了,大量的文章分析了pnpm的原理。了解之后,发现pnpm整个架构都是基于硬链接和...
    99+
    2023-06-29
  • Linux下软链接和硬链接的示例分析
    这篇文章主要介绍了Linux下软链接和硬链接的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard L...
    99+
    2023-06-16
  • 区分Linux硬链接与软链接
    在Linux中,连接文件有两种,一种类似于Windows的快捷方式,可以让你快速地链接到目标文件(或目录),这种称为软链接(soft link),也叫作符号链接(symbolic link);另一种则是通过文件系统的...
    99+
    2022-06-03
    Linux 硬链接 Linux 软链接
  • linux硬链接和软链接的区别
    本篇内容介绍了“linux硬链接和软链接的区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简而言之: 软链接相当于windows中的快捷方...
    99+
    2023-06-13
  • LINUX系统中硬链接数的示例分析
    这篇文章主要介绍了LINUX系统中硬链接数的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。打开LINUX操作系统,可以使用UBUNTU。找到左边任务栏的终端窗口并且打...
    99+
    2023-06-28
  • Linux硬链接和软链接用来做什么
    本篇内容介绍了“Linux硬链接和软链接用来做什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux链接分两种,一种被称为硬链接(Ha...
    99+
    2023-06-27
  • Linux硬链接和软链接的概念是什么
    这篇文章主要介绍“Linux硬链接和软链接的概念是什么”,在日常操作中,相信很多人在Linux硬链接和软链接的概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux硬链接和软链接的概念是什么”的疑...
    99+
    2023-06-28
  • Linux软链接和硬链接的区别是什么
    本篇内容主要讲解“Linux软链接和硬链接的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux软链接和硬链接的区别是什么”吧!导读我们知道文件都有文件名与数据,这在 L...
    99+
    2023-06-05
  • Linux硬链接与软链接原理及用法解析
    在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。 硬链接概念 硬链接(ha...
    99+
    2022-06-03
    linux 硬链接 软链接
  • linux中软链接和硬链接有没有区别
    小编给大家分享一下linux中软链接和硬链接有没有区别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!linux中软链接和硬链接有区别,区别为:1、软链接以路径的形式存在,硬链接以文件副本的形式存在;2、软链接可以跨文件系统...
    99+
    2023-06-25
  • Linux中软链接和硬链接有什么区别
    这篇文章将为大家详细讲解有关Linux中软链接和硬链接有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是软链接符号链接Symbolic Link(symlink),又称软链接So...
    99+
    2023-06-16
  • Linux系统如何辨别软链接和硬链接
    这篇文章主要介绍“Linux系统如何辨别软链接和硬链接”,在日常操作中,相信很多人在Linux系统如何辨别软链接和硬链接问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux系统如何辨别软链接和硬链接”的疑...
    99+
    2023-06-13
  • 怎么理解Linux的硬链接与软链接
    这篇“怎么理解Linux的硬链接与软链接”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么理解Linux的硬链接与软链接”文...
    99+
    2023-06-16
  • Linux系统中软链接和硬链接的区别是什么
    Linux系统中软链接和硬链接的区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分...
    99+
    2023-06-05
  • Linux下软链接和硬链接的创建、删除、区别详解
    在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存里,从而实现对文件的快速访问。 链接是一种在...
    99+
    2022-06-03
    Inode Linux 快捷方式 文件指针 文件系统 文件路径 硬链接 符号链接 软链接
  • 如何创建Linux系统中硬链接与软链接
    这篇文章主要介绍“如何创建Linux系统中硬链接与软链接”,在日常操作中,相信很多人在如何创建Linux系统中硬链接与软链接问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何创建Linux系统中硬链接与软链接...
    99+
    2023-06-12
  • linux的软连接和硬链接有什么区别
    Linux中的软连接(Symbolic Link)和硬链接(Hard Link)是两种不同类型的链接方式,它们有以下区别:1. 文件...
    99+
    2023-10-12
    linux
  • linux怎么创建软硬链接
    在Linux系统中,可以使用`ln`命令创建软链接和硬链接。1. 创建软链接:```ln -s 源文件 链接文件```源文件可以是文...
    99+
    2023-10-12
    linux
  • linux的软连接和硬链接的作用是什么
    软链接和硬链接都是用于创建文件或目录的引用。它们的作用是:1. 软链接(Symbolic Link):也被称为符号链接或symlin...
    99+
    2023-10-12
    linux
  • Linux中怎么给目录创建软链接或硬链接
    这篇文章将为大家详细讲解有关Linux中怎么给目录创建软链接或硬链接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  解决方法:  当我们需要在不同的目录下用到同一个文件时,会用到以下命令。...
    99+
    2023-06-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作