广告
返回顶部
首页 > 资讯 > 操作系统 >linux中的软连接和硬连接详解
  • 787
分享到

linux中的软连接和硬连接详解

linux软连接介绍linux硬连接介绍 2022-06-04 23:06:18 787人浏览 独家记忆
摘要

目录1、文件和目录的基本存储2、In命令介绍(1)我们来看看ln命令的基本信息命令名称:(2)ln命令的基本格式3、创建硬链接(1)如何创建硬链接(2)硬链接特征(3)硬连接原理4、创建软链接(1)如何创建软链接(2)软

目录
  • 1、文件和目录的基本存储
  • 2、In命令介绍
    • (1)我们来看看ln命令的基本信息命令名称:
    • (2)ln命令的基本格式
  • 3、创建硬链接
    • (1)如何创建硬链接
    • (2)硬链接特征
    • (3)硬连接原理
  • 4、创建软链接
    • (1)如何创建软链接
    • (2)软链接特征
    • (3)软连接原理
    • (4)说明

提示:先来说明一下在linux系统中文件和目录的基本存储,这样更方便我们理解和学习Linux系统中的硬链接和软链接。

1、文件和目录的基本存储

之前说过分区,每个分区都可以理解为分成两部分,一小部分里边是存放文件的i节点信息,大部分放的是Block文件块。

在文件的i节点当中保存的信息有:i节点号,时间,权限,保存位置。而Block块中保存的是文件中的数据。

每个文件夹中都会有i节点和对应的Block文件。

但是有一个问题,一个文件的文件名是存放哪里?

我们就以在文件夹root中有一个文件abc为例。文件路径为/root/abc

root目录中,所有的文件都有i节点名和对应的Block块,而root目录也有自己的i节点信息。有i节点信息,就有与之对应的Block块,root目录的Block块中存放的数据是root目录下所有的子文件和子目录的文件名,和它对应的i节点号。

也就是说,root目录下文件的文件名,没有写在该文件的i节点里。而是写在上级目录的Block块中。
如果我要查找abc文件的文件名,要先找到root文件夹的i节点,然后在root目录的Block块中找到abc的文件名和对应的i节点号才能找到。通过abc文件的i节点号最终读取到abc文件中的数据。

root目录的文件名或者说是i节点存储在哪里?

root目录是在根目录下的,根目录会有自己的i节点信息,也会有自己的Block,综上所述,那root目录的文件名和i节点号的信息是放在根目录的Block块中的。
那根的i节点号怎么获取?

根的i节点号是固定的,根的i节点号为2。(因为编号1在系统内核加载的时候被占用了)


[root@192 ~]# ls -ild /
2 dr-xr-xr-x. 25 root root 4096 12月 27 22:27 /
第一位显示的就是i节点号。

总结

综上所诉,要查看abc文件的内容,就先用通过根的i节点号,读取根的Block块中数据,找到root目录的i节点信息,读取root目录的Block块中数据,找到abc文件的i节点信息,读取abc文件的Block块中数据。
以上就是文件和目录的基本存储。

2、In命令介绍

(1)我们来看看ln命令的基本信息命令名称:

ln英文原意:make links between file所在路径:/bin/ln执行权限:所有用户。功能描述:在文件之间建立链接。

(2)ln命令的基本格式


[root@localhost ~ ] # ln [选项] 源文件 目标文件

选项:
  -s:建立软链接文件。如果不加“-s”选项,则建立硬链接文件
  -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件

3、创建硬链接

(1)如何创建硬链接

示例如下:


[root@localhost ~] # touch cangls
[root@localhost ~ ]# ln /root/cangls /tmp/

# 建立硬链接文件,目标文件没有写文件名,会和原合一致
# 也就是/root/cangls和/tmp/cangls 是硬链接文件

说明ln命令应用:


# 新创建一个文件abc,查看abc文件的硬连接数
[root@192 ~]# touch abc
[root@192 ~]# ls -il abc 
1043285 -rw-r--r--. 1 root root 0 12月 29 18:18 abc
# 可以看到abc文件的硬连接数为1。

# 在tmp目录中给abc文件创建一个硬连接文件,然后查看这两个文件硬连接数。
[root@192 ~]# ln abc /tmp/abc_h
[root@192 ~]# ls -il abc /tmp/abc_h 
1043285 -rw-r--r--. 2 root root 0 12月 29 18:18 abc
1043285 -rw-r--r--. 2 root root 0 12月 29 18:18 /tmp/abc_h
# 可以看到abc文件的引用计数(硬连接数)增加了1。
# 同时还可以看到,上边的两个文件的i节点号是一样的。

(2)硬链接特征

源文件和硬链接文件拥有相同的InodeBlock。修改任意一个文件,另一个都改变。删除任意一个文件,另一个都能使用。硬链接标记不清,很难确认硬链接文件位置(很难确定这是一个硬连接文件,自己创建的还可能记住,要是别人创建的,我根本无法判定一个文件是硬连接文件),不建议使用。硬链接不能链接目录。硬链接不能跨分区(因为两个文件需要同一个分区的同一个i节点号。所以跨分区找不到)。

(3)硬连接原理

我上边在root目录下创建了一个abc文件,然后在/tmp/目录下创建一个abc文件硬连接文件abc_h

root目录、abc文件、tmp目录,每个都有自己的i节点号和对应的Block块。通过root目录的i节点号,找到对应的Block块。Block块中记录着abc文件的名称和i节点号,就可以找到abc文件。而硬连接文件abc_hi节点号和文件名是记录在tmp目录的Block块中的。并且上边查询到abc文件和abc_h硬连接文件的i节点号是相同的,所以通过tmpBlock块中的abc_h信息,也可以找到abc文件的i节点号。

所以root目录中记录的abc文件信息和tmp目录记录的abc_h文件信息,都指向了root目录下的abc文件。

看下图:

linux中的软连接和硬连接详解

所以上图证明了:
修改任意一个文件,另一个都改变。
删除任意一个文件,另一个都能使用。

4、创建软链接

(1)如何创建软链接

软连接可以直接看作为WindowWPuDZgys系统中的快捷方式。

建立软链接文件,如下:


[root@localhost ~]# touch abc
[root@localhost ~]# ln -s /root/abc /tmp/

root目录中cde文件,然后创建软连接/tmp/cde_s文件,查看这两个文件。

如下图所示:


[root@localhost ~ ] # touch cde
[root@localhost ~ ] # ln -s /root/cde /tmp/cde_s
[root@localhost ~ ] # ls -il /root/cde /tmp/cde_s
1055972-rw-r--r--1 root root 0 2月1715:30 /root/cde
261634 1rwxrwxrwx 1root root 9 2月1715:30 /tmp/cde_s->/root/cde

说明:

第一:可以看到创建的软连接文件有明确的提示这个一个软链接文件,和它的源文件的位置在哪里。
/tmp/cde_s->/root/cde。这也就是为什么说硬连接标记不清的原因。

第二:文件的引用链接数没有增加。

第三:两个文件的i节点号完全不同。

第四:源文件abc是0字节,空的。而软连接的文件大小为9个字节。

(2)软链接特征

软链接和源文件拥有不同的InodeBlock。两个文件修改任意一个,另一个都改变。删除软链接,源文件不受影响;删除源文件,软链接不能使用,因为软链接没有实际数据,只保存源文件的Inode,不论源文件多大,软链接文件大小不变。软链接的权限是最大权限lrwxrwxrwx.,但是由于没有实际数据,最终访问时需要参考源文件权限。软链接可以链接目录,软链接可以跨分区。软链接特征明显,建议使用软连接。

(3)软连接原理

root目录下有一个cde文件,在tmp目录创建一个cde文件的软链接文件cde_s。通过root目录的i节点号,可以找到root目录的block块,root目录的block块中记录了cde文件的文件名和i节点号。查到cde文件的i节点号就找到了cde文件的block块,就能读取里边的数据。

tmp目录有自己的i节点号,与之对应的block块,tmp目录的block块中有cde_s文件的文件名和i节点号,(之前说硬连接这两个i节点号是相同的,所以指向的同一个文件),而软连接文件和源文件的i节点号是不相同的。说明cde_s文件有自己的i节点号,并且cde_s文件有自己的block块。

现在的关键是,cde_s文件的block块中存放的是什么?
如果里边存放的是数据,那cde文件和cde_s文件就不是链接的关系了,就完全是复制关系了,这样就不会出现修改源文件时软链接文件也变,修改软链接文件后源文件也改变的情况。

其实在cde_s文件的block块中存放的是源文件的i节点号。

如下图:

linux中的软连接和硬连接详解

这也就说明了为什么新创建的软连接文件创建完成后就有数据,并且数据大小不随源文件的改变而改变。

还有一点要注意,软链接文件的权限是最大的,但这个权限是针对软链接文件的,软链接文件的block块中并不存放数据,如果要操作源文件,还是要看源文件权限,这里需要注意。

(4)说明

windows系统中创建快捷方式是为了软件安装位置太深,不好找,所以在桌面创建一个快捷方式,那Linux系统创建软链接的作用是什么,反正都是通过目录访问?

在Linux系统中,软链接最主要的作用是照顾管理员的使用习惯。

如下图:

linux中的软连接和硬连接详解

在老式的Linux系统中,/etc/rc.local文件的位置我们用着已经习惯了,系统更新之后,为了升级的需要,/etc/rc.local文件的位置改变了。我们在找这个文件就很麻烦了。解决这个问题的方法就是给这两个文件创建一个软链接来解决上边问题,既照顾了升级需要,也照顾了使用习惯。

还要注意一个情况,用相对路径创建def文件的软链接,用绝对路径创建anaconda-ks.cfg文件的软链接。

linux中的软连接和硬连接详解

从上图中可以看到用相对路径创建的软链接出现了报错。

提示:创建软链接时一定要使用绝对路径,硬连接没有要求。

到此这篇关于linux中的软连接和硬连接详解的文章就介绍到这了,更多相关linux软连接和硬连接内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: linux中的软连接和硬连接详解

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

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

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

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

下载Word文档
猜你喜欢
  • linux中的软连接和硬连接详解
    目录1、文件和目录的基本存储2、In命令介绍(1)我们来看看ln命令的基本信息命令名称:(2)ln命令的基本格式3、创建硬链接(1)如何创建硬链接(2)硬链接特征(3)硬连接原理4、创建软链接(1)如何创建软链接(2)软...
    99+
    2022-06-04
    linux软连接介绍 linux硬连接介绍
  • linux中的软连接和硬连接怎么理解
    本篇内容主要讲解“linux中的软连接和硬连接怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“linux中的软连接和硬连接怎么理解”吧!提示:先来说明一下在Linux系统中文件和目录的基本...
    99+
    2023-06-22
  • Linux中软连接和硬链接是什么意思
    这篇文章主要为大家展示了“Linux中软连接和硬链接是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中软连接和硬链接是什么意思”这篇文章吧。 简介我们现代的操作系统需...
    99+
    2023-06-16
  • linux的软连接和硬链接有什么区别
    Linux中的软连接(Symbolic Link)和硬链接(Hard Link)是两种不同类型的链接方式,它们有以下区别:1. 文件...
    99+
    2023-10-12
    linux
  • linux的软连接和硬链接的作用是什么
    软链接和硬链接都是用于创建文件或目录的引用。它们的作用是:1. 软链接(Symbolic Link):也被称为符号链接或symlin...
    99+
    2023-10-12
    linux
  • linux系统中软连接和硬链接有什么区别
    这篇文章主要介绍了linux系统中软连接和硬链接有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。我自己做的图片大家参考下:软连接硬链接的区别:硬连接指通过索引节点来进...
    99+
    2023-06-13
  • MySQL中的连接操作:内连接、外连接和交叉连接详解
    MySQL中的连接操作:内连接、外连接和交叉连接详解在MySQL数据库中,连接操作是一种常用的操作技术,用于将两个或多个表中的数据按照一定的条件进行合并。连接操作可以帮助我们处理复杂的数据查询和分析需求。在MySQL中,我们通常使用内连接、...
    99+
    2023-10-22
    连接操作 内连接 外连接
  • 详解MySQL的内连接和外连接
    mysql 中的内连接、左外连接和右外连接是用于连接两个或多个表的不同方式,它们之间的区别如下: 内连接(Inner Join): 内连接也称为等值连接,只返回两个表中键值匹配的行,即只有在两个表中都有匹配的数据时才会返...
    99+
    2023-05-06
    MySQL内连接 MySQL外连接
  • Linux软连接该如何理解
    Linux软连接该如何理解,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、软链接创建 1、创建软链接 ln -s 【目...
    99+
    2023-06-28
  • Linux下软链接和硬链接的创建、删除、区别详解
    在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存里,从而实现对文件的快速访问。 链接是一种在...
    99+
    2022-06-03
    Inode Linux 快捷方式 文件指针 文件系统 文件路径 硬链接 符号链接 软链接
  • mysql的内连接,左连接和右链接查询详解
    mysql> SELECT * FROM tcount_tbl; +---------------+--------------+ | runoob_author | ...
    99+
    2022-11-13
  • linux硬链接和软链接的区别
    本篇内容介绍了“linux硬链接和软链接的区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简而言之: 软链接相当于windows中的快捷方...
    99+
    2023-06-13
  • SQL连接的理解和使用(内连接:自然连接&等值连接,外连接:左连接&右连接&全外连接)
    目录 一、连接的介绍连接是什么?连接分几种?条件连接等值连接自然连接 二、连接的使用内连接 INNER JOIN内连接与等值连接区别内连接与自然连接区别 外连接 OUTE...
    99+
    2023-09-17
    sql 数据库 mysql
  • 怎么理解Linux的硬链接与软链接
    这篇“怎么理解Linux的硬链接与软链接”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么理解Linux的硬链接与软链接”文...
    99+
    2023-06-16
  • Mysql内连接与外连接的区别详解
    目录前言内连接inner join外连接outer join左(外)连接 left join右(外)连接 right join总结前言 我在写sql查询的时候,用的最多的就是where条件查询,这种查询也叫内连...
    99+
    2023-01-28
    mysql内外连接 mysql内外连接区别 mysql左连接和右连接的区别
  • linux硬链接和软链接的示例分析
    这篇文章主要介绍linux硬链接和软链接的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言最近前端包管理器pnpm真的是太火了,大量的文章分析了pnpm的原理。了解之后,发现pnpm整个架构都是基于硬链接和...
    99+
    2023-06-29
  • linux软连接重启失效怎么解决
    如果在Linux中创建的软连接在重启后失效,可能是由于以下几个原因导致的:1. 软连接的源文件被删除:如果软连接所指向的源文件在重启...
    99+
    2023-10-12
    linux
  • Linux中删除软连接的示例分析
    小编今天带大家了解Linux中删除软连接的示例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux中删除软连接的示例分析”的...
    99+
    2023-06-28
  • linux中软链接和硬链接有没有区别
    小编给大家分享一下linux中软链接和硬链接有没有区别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!linux中软链接和硬链接有区别,区别为:1、软链接以路径的形式存在,硬链接以文件副本的形式存在;2、软链接可以跨文件系统...
    99+
    2023-06-25
  • Linux中软链接和硬链接有什么区别
    这篇文章将为大家详细讲解有关Linux中软链接和硬链接有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是软链接符号链接Symbolic Link(symlink),又称软链接So...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作