返回顶部
首页 > 资讯 > 操作系统 >Linux中文件与目录对应的硬链接与软链接方式的区别有哪些
  • 942
分享到

Linux中文件与目录对应的硬链接与软链接方式的区别有哪些

2023-06-12 21:06:03 942人浏览 泡泡鱼
摘要

本篇内容主要讲解“linux中文件与目录对应的硬链接与软链接方式的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中文件与目录对应的硬链接与软链接方式的区别有哪些”吧!硬链接新

本篇内容主要讲解“linux中文件与目录对应的硬链接与软链接方式的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中文件与目录对应的硬链接与软链接方式的区别有哪些”吧!

硬链接
新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用。
硬链接特征:
1、拥有相同的 i节点 和相同的存储block快,可以看做是同一个文件
2、可通过i节点识别,i节点号相同
3、不能跨分区
4、不能针对目录使用
5、删除文件,硬链接正常使用


软链接
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
软链接特征:
1、类似windows快捷方式
2、软链接拥有自己的i节点和block快,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
3、lrwxrwxrwx l软链接,软链接文件权限都为rwxrwxrwx,但具体看原文件的权限
4、修改任意文件,另一个都改变
5、删除原文件,软链接不能使用
6、创建软链接一定要写绝对路径
注意软链接的文件权限为777 但是最终权限有源文件决定 l表示软链接文件。
一旦源文件删除,软链接将不能使用。(这是和硬链接的主要区别)
注:创建软链接时,源文件要始终使用绝对路径,否则,若创建的软链接和源文件不在同一个目录时,会找不到源文件。(硬链接不会有这种情况)
限制少,更灵活,推荐使用。


补充:
linux系统中的硬连接有两个限制:不能跨越文件系统和不允许普通用户对目录作硬连接。至于第一个限制,很好理解,而第二个就不那么好理解 了。 对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接,这些都说明了系统限制对目录进行硬连接只是一个硬性规定,并不是逻辑上不允许或技术上的不可行。那么操作系统为什么要进 行限制呢?答案可能有两个。

先来说第一个,如果引入了对目录的硬连接就有可能在目录中引入循环,那么在目录遍历的时候系统就会陷入无限循环当中。也许您会说,符号连接不也可以引入循 环吗,那么为什么不限制目录的符号连接呢?原因就在于在linux系统中,每个文件(目录也是文件)都对应着一个inode结构,其中inode数据结构 中包含了文件类型(目录,普通文件,符号连接文件等等)的信息,也就是说操作系统在遍历目录时可以判断出符号连接,既然可以判断出符号连接当然就可以采取 一些措施来防范进入过大的循环了,系统在连续遇到8个符号连接后就停止遍历,这就是为什么对目录符号连接不会进入死循环的原因了。但是对于硬连接,由于操 作系统中采用的数据结构和算法限制,目前是不能防范这种死循环的。

在说明第二个原因之前,先来看看文件的dentry结构在系统空间中长什么样子和它们是怎么存放在系统空间的。dentry结构主要包含了文件名,文件的inode号,指向父目录dentry结构的指针和其他一些与本次讨论无关的指针,这里关键是那个指向父目录的指针;系统中所有的dentry结构都 是按杂凑值存放在杂凑表中的,这里的杂凑算法很重要,它是取文件名和文件的父目录dentry结构的地址一起杂凑运算出杂凑值的。现在假设有两个目录 /a和/b,其中/b是我们通过ln -d命令建立起来的对/a的硬连接。这个时候内核空间中就会存在一个/a的dentry结构和一个/b的dentry结构,由上面的知识可知,/a和/b 目录下面的每一个文件或目录都各自有对应的dentry结构(因为虽然/a目录下面的文件名没有改变,但是因为dentry结构有指向父目录dentry 的指针和计算杂凑值时考虑了父目录dentry结构的地址,这个时候dentry结构就分身乏术了),而且这种继承还会影响到所有子目录下面的文件,这样 下来就会浪费很多系统空间了,特别是如果被硬连接的目录中存在大量文件和子目录的时候就更加明显了。这也许是第二个原因。

到此,相信大家对“Linux中文件与目录对应的硬链接与软链接方式的区别有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Linux中文件与目录对应的硬链接与软链接方式的区别有哪些

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

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

猜你喜欢
  • Linux中文件与目录对应的硬链接与软链接方式的区别有哪些
    本篇内容主要讲解“Linux中文件与目录对应的硬链接与软链接方式的区别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中文件与目录对应的硬链接与软链接方式的区别有哪些”吧!硬链接新...
    99+
    2023-06-12
  • linux中符号链接与硬链接的区别有哪些
    这篇“linux中符号链接与硬链接的区别有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux中符号链接与硬链接的区...
    99+
    2023-06-30
  • linux的软连接和硬链接有什么区别
    Linux中的软连接(Symbolic Link)和硬链接(Hard Link)是两种不同类型的链接方式,它们有以下区别:1. 文件...
    99+
    2023-10-12
    linux
  • Linux系统中软链接和硬链接的区别是什么
    Linux系统中软链接和硬链接的区别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分...
    99+
    2023-06-05
  • linux中动态链接和静态链接的区别有哪些
    这篇文章主要介绍“linux中动态链接和静态链接的区别有哪些”,在日常操作中,相信很多人在linux中动态链接和静态链接的区别有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中动态链接和静态链接...
    99+
    2023-06-29
  • Linux下的文件链接有哪些
    本文小编为大家详细介绍“Linux下的文件链接有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux下的文件链接有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Linux 文件系统中有两种链接lin...
    99+
    2023-06-28
  • linux下静态链接库和动态链接库的区别有哪些
    这篇文章主要讲解了“linux下静态链接库和动态链接库的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux下静态链接库和动态链接库的区别有哪...
    99+
    2023-02-07
    linux
  • linux中目录和文件的区别有哪些
    本篇内容介绍了“linux中目录和文件的区别有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!区别:1、存储的数据不同,目录中存储了一张表...
    99+
    2023-07-02
  • linux如何创建一个指向文件或目录的软链接
    这篇文章将为大家详细讲解有关linux如何创建一个指向文件或目录的软链接,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如何创建指向文件或目录的软链接 创建软链接 在 Linux 中创建软链接非常简单。可以...
    99+
    2024-04-02
  • Iterator与LIstIterator接口在java中的区别有哪些
    这篇文章将为大家详细讲解有关Iterator与LIstIterator接口在java中的区别有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java  Iterator接口和L...
    99+
    2023-05-31
    java iterator listiterator
  • PHP中的文件与目录操作有哪些
    本文小编为大家详细介绍“PHP中的文件与目录操作有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP中的文件与目录操作有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。路径与磁盘操作相对路径和绝对路径绝...
    99+
    2023-07-04
  • php中类继承与接口继承的区别有哪些
    今天小编给大家分享一下php中类继承与接口继承的区别有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在PHP中,类继承与...
    99+
    2023-06-29
  • Linux文件权限与目录管理的知识点有哪些
    这篇文章主要介绍“Linux文件权限与目录管理的知识点有哪些”,在日常操作中,相信很多人在Linux文件权限与目录管理的知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • MySQL中的连接方式有哪些它们之间有何区别
    MySQL中的连接方式主要有三种:内连接(INNER JOIN)、外连接(OUTER JOIN)、交叉连接(CROSS JOIN)。...
    99+
    2024-03-06
    MySQL
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作