【Linux上分之路】第八篇:Linux文件链接:硬链接和软链接

冲

Linux文件链接

前言

Linux文件类型有一种为链接文件,链接文件可以维护同一份文件的两份或多份副本,Linux文件系统通常会将操作系统的文件数据分别放在不同的块,权限和属性放置到inode中,而实际数据则放置到data block块中,除此之外,一个超级块(superblock)会记录整个文件系统的整体信息,包括inode与block的总量、使用量、剩余量,每个inode和block都有编号

链接文件分类

链接文件可以分为两种:硬链接、软链接

软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录

硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息

链接命令:ln

ln [-sf] 源文件 目标文件
参数:
-s:软链接即符号链接的标志,不加该参数,则表示硬链接
-f:如果目标文件存在,则将目标文件删除后再建立文件

硬链接

硬链接:通过文件系统的inode来产生新的文件名,而不是新的文件,即在某个目录下新增一条文件名链接到某个inode号码的关联记录,不会额外占用磁盘空间

硬链接的限制

  • 不能跨文件系统进行硬链接,因为不同的文件系统有不同的inode table
  • 不能链接目录:若对目录进行链接,则目录下的文件都要建立硬链接,会造成环境的复杂度

硬链接建立

Linux文件链接硬链接test

硬链接建立后,两个文件对应的inode号:787338是一致的,则这个两个文件名所关的文件信息时一致的,除文件名之外,并且不论通过那个文件名来编辑,最终更改的内容都会被写入到相同的inode与block区块中,即都能进行数据的修改,不论删除inode关联中的任一个文件名时,其他文件都可以进行访问,直到没有inode链接数为0时,图中字段值为2,就是表明为有链接数

硬链接设置链接文件时,磁盘空间和inode数目不会改变

硬链接分析

Linux文件链接硬链接图解

在inode信息中,文件名信息是不会记录在inode中,而是记录在父级目录的block中,即目录的block中记录着所有一级子文件和子目录的inode,但是文件的实际内容是在block中

  1. 即目录/root/test/test的block记录着源文件test1.c的文件名,而该源文件的inode号为787338,该源文件的实际内容是通过inode指向block

  2. 然后建立硬链接目标文件test-hl链接到源文件test1.c

  3. 目标文件的的inode号存储在父级目录/root/test的block中,通过硬链接新增了目标文件名test-hl到inode号787338的关联记录

软链接

软链接又称为符号链接,等同于windows下的快捷方式,符号链接就是建立一个独立的文件,而这个文件会让数据的读取直接指向它链接的那个文件的文件名

软链接建立

Linux文件链接软链接

软链接即符号链接,链接所建的文件是作为一个单独的新文件,所有会占有全新的inode号:787328,在链接目标文件后面会通过"->"显示源文件的完整名字,软链接比硬链接的标示要明显很多,同时也不会在硬链接那样有文件系统和目录的限制,可以链接目录和跨文件系统链接,根本原因就是软链接只是一个快捷方式

软链接的源文件删除时,则目标文件无法进行访问,即目标文件无法找到被删除的原始文件名

软链接的源文件必须写绝对路径,否则链接会报错 ,除非是同目录下的链接

Linux文件链接软链接图解

软链接分析

  1. 目录/root/test/test的block记录着源文件test1.c的文件名,而该源文件的inode号为787338,该源文件的实际内容是通过inode指向block

  2. 然后建立软链接,目标文件testSymLink.c链接到源文件test1.c

  3. testSymLink.c是一个新建的文件,有着自己的inode号,该文件名在父级目录/root/test/test对应的block中,而testSymLink.c的block指向源文件的父级目录的inode,找到test.c的文件名,从而间接指向实际的inode的

硬链接软链接的区别?

  1. 硬链接记录的是目标的inode,软链接记录的是目标的路径

  2. 软链接就像是快捷方式,而硬链接就像是备份

  3. 软链接可以做跨分区的链接,而硬链接由于inode的缘故,只能在本分区中做链接。所以,软链接的使用频率要高很多

总结

软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录

硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值