软链接与硬链接的区别

1、ext4 文件系统

在讲区别前,让我们先了解下ext文件系统是如何工作的?

  • ext文件系统是分成incode和block两个部分

    • inode:记录文件属性,在linux系统中,目录也是一种文件哦。文件属性包括权限、文件所有着和所属组、文件大小、文件的数据真正保存的 block 编号。
    • block:block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。目录的block记录着一级文件名(目录也是文件,所以也显示出目录名称)和一级文件的inode。

例子:假设在系统查找 /root/tmp/test 的文件时,系统是如何一步一步进行的
1、首先找到根目录的 inode(根目录的 inode 是系统已知的,inode 号是 2),然后判断用户是否有权限访问根目录的 block
2、如果有权限,则可以在根目录的 block 中访问到 root 的文件名及对应的 inode 号
3、通过 root 目录的 inode 号,可以查找到 root 目录的 inode 信息,接着判断用户是否有权限访问 root目录的 block。
4、如果有权限,则可以在root目录的 block 中访问到 tmp 的文件名及对应的 inode 号
5、通过tmp的inode号找到tmp目录的inode信息,接着判断是否有权限访问tmp目录的block
6、如果有权限,则可以在tmp目录的block块中访问到test的文件名和inode好
7、通过inode号找到test文件的inode信息,接着判断是否有权限访问test文件的block
8、如果有权限,则可以在test的block信息。现在问题来了,如果test是普通文件,如果是软链接,如果是硬链接,它们分别是怎么运行的?

软链接与硬链接的区别
流程图文件地址:https://www.processon.com/view/link/5ec7492f1e08530a9b13753a

2、软连接与硬链接的区别:

ln 命令用于给文件创建链接,根据 Linux 系统存储文件的特点,链接的方式分为以下 2 种:
软链接:类似于 Windows 系统中给文件创建快捷方式,即产生一个特殊的文件,该文件用来指向另一个文件,此链接方式同样适用于目录。
硬链接:我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。

  • 硬链接示意图

    软链接与硬链接的区别
  • 软链接示意图

软链接与硬链接的区别

参考C语言中文网http://c.biancheng.net/view/vip_7654.html