“软链接”和“硬链接”的区别

我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。而有一种方法可以快速的寻找到数据元,那就是软硬链接,让我们一起来看一下吧。
什么是链接?

链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。

它是用来干什么的?

你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到软链接(也称符号链接)。

内容

软链接和硬链接的区别是?
下面我们进入正题,来探讨一下软硬两种链接到底有什么区别?

首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。

那区别在哪呢?在底层的原理上。

为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建:

$ touch myfile && echo "This is a plain text file." > myfile$ cat myfileThis is a plain text file.

现在我们创建了一个普通地不能再普通的文件了。然后我们对它创建一个硬链接,并查看一下当前目录:

$ ln myfile hard$ ls -li25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile

在 ls 结果的最左边一列,是文件的 inode 值,你可以简单把它想成 C 语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。

你也看到了,这两个文件就如同一个文件一样,inode 值相同,都指向同一个区块。

简单说,硬链接就是一个 inode 号对应多个文件。就是同一个文件使用了多个别名(上图中 hard link 就是 myfile 的一个别名,他们有共同的 inode)。

然后我们修改一下刚才创建的 hard 链接文件:

$ echo "New line" >> hard$ cat myfileThis is a plain text file.New line

可以看到,这两个文件果真就是一个文件。 下面我们看看软链接(也就是符号链接)和它有什么区别。

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块

$ ln -s myfile soft$ ls -li25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 hard25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 myfile25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft -> myfile

诶,你会发现,这个软链接的 inode 竟然不一样啊,并且它的文件属性上也有一个 l 的 flag,这就说明它与之前我们创建的两个文件根本不是一个类型。

下面我们试着删除 myfile 文件,然后分别输出软硬链接的文件内容:

$ rm myfile$ cat hardThis is a plain text file.New line$ cat softcat: soft: No such file or directory

之前的硬链接没有丝毫地影响,因为它 inode 所指向的区块由于有一个硬链接在指向它,所以这个区块仍然有效,并且可以访问到。 然而软链接的 inode 所指向的内容实际上是保存了一个绝对路径,当用户访问这个文件时,系统会自动将其替换成其所指的文件路径,然而这个文件已经被删除了,所以自然就会显示无法找到该文件了。

为验证这一猜想,我们再向这个软链接写点东西:

$ echo "Something" >> soft$ lshard myfile soft

可以看到,刚才删除的 myfile 文件竟然又出现了!这就说明,当我们写入访问软链接时,系统自动将其路径替换为其所代表的绝对路径,并直接访问那个路径了。

总结

总结
到这里我们其实可以总结一下了:

硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。

原文来自:https://www.cnblogs.com/fqnb001/p/8778790.html

本文地址:https://www.linuxprobe.com/soft-and-hard-links.html编辑:冯瑞涛,审核员:逄增宝

本文原创地址:https://www.linuxprobe.com/soft-and-hard-links.html

(0)

相关推荐

  • 浅谈linux系统中mv、cp、rm这三种命令的工作原理 | Linux运维部落

    mv.cp.rm命令是linux系统中经常用到的工具,但是如果想知道这些命令在执行过程中底层具体做了哪些工作,我们首先要了解下一个关键的东西:inode 表.   inode(index node)表 ...

  • 每周学点测试小知识-Linux文件属性

    跟着芒果一起,好好学习,天天向上~ 上周五下午的vip试听课是芒果给大家介绍的Linux的一些基础知识,在这里芒果给大家对于其中的一部分内容--Linux文件属性做个小介绍: 课堂上芒果给大家介绍过L ...

  • 文件操作命令 cp、mv、rm 底层原理

    cp.mv.rm 命令到底做了什么? 缘起 在linux 系统中上线时经常会遇到需要替换原有可执行程序的操作,我通常的做法是: 删除原有可执行文件.例如:rm a.out 以相同的文件名把新的可执行文 ...

  • fs.symlink、 ln、ln -s的详解与应用分析

    inode 在讲解软/硬链接之前,先了解一个 linux 系统中重要的概念 inode .众所周知,文件存储在硬盘上,硬盘的最小存储单位叫做 "扇区"( Sector,每个扇区存储 ...

  • 第6期 什么是PLC冗余以及软冗余与硬冗余的区别【 PLC知识分享】

    拖拉机一开始接触到"冗余"这个词的时候,不太好理解,总是眉头紧锁直嘬牙花子,今天给大家讲讲冗余到底是什么? "冗余"系统又称为"热备份"系统 ...

  • 足金和硬金的区别 足金和硬金哪个值钱

    黄金是要分为很多种类的,虽然黄金都是具有保值功能,但是不同材质的黄金或者说是制作工艺不一样的黄金,它在保值上是不一样的. 一.足金和硬金和的区别: 1.足金 足金就是黄金的含量不低于99%,颜色深,质 ...

  • 视频软解码和硬解码的区别

    对于视频的传输而言,解码的认识应该是基础的. 那么什么是软解码,什么又是硬解码呢?之间的差异在哪里呢.难道只是专有名词的不同吗?其实他两个的区别很明显 区别点 我们在计算机上播放的视频文件都是经过压缩 ...

  • 软解码和硬解码的区别

    软解码和硬解码有什么区别? 硬解码:由显卡核心GPU来对高清视频进行解码工作,CPU占用率很低,画质效果比软解码略差一点,需要对播放器进行设置. 优点:播放流畅.低功耗 缺点:受视频格式限制.功耗大. ...

  • 为什么装修中多用硬线?硬线和软线有什么区别?

    电工学习网:www.diangon.com 技术驱动未来,关注电工学习网官方微信公众号"电工电气学习",收获更多经验知识. 新房装修,大大小小有很多细节,每一个细节都需要谨慎对待, ...

  • 职务和职级有啥区别?公职人员更快晋升有7个“硬杠杠”

    <新公务员法>已经颁布实施有一段时间了,但是好多人还是没有搞清楚里面的若干重要内容.为了自己的仕途,下面文章请认真阅读. <新公务员法>职务和职级有啥区别? 按照现行公务员法, ...

  • 请问煤气的软管和硬管有什么区别?

    使用软管,维修拆卸方便,安装时不容易造成漏气,不过5年左右需要更换一次.硬管拆卸安装费事,不是专业人员和不懂原理的人员的安装容易造成漏气,硬管用于燃气热水器,软管用于打火灶,因为它们的连接方式不一样.

  • FPGA硬核和软核处理器的区别

    软核处理器 SOPC技术,即软核处理器,最早是由Altera公司提出来的,它是基于FPGA的SOC片上系统设计技术.是使用FPGA的逻辑和资源搭建的一个软核CPU系统,由于是使用FPGA的通用逻辑搭建 ...

  • 硬核科普!EMUI和鸿蒙系统有什么区别?

    说这个之前,可能很多人会先问,鸿蒙不是安卓吗?EMUI不也是安卓吗?这种问题很有可能是被带节奏了. 没发布前不少网友说,鸿蒙是PPT系统,快发布了说耍猴,真发布了说安卓套壳.不能运行安卓程序说要之何用 ...