详解软链接和硬链接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了详解软链接和硬链接相关的知识,希望对你有一定的参考价值。

  • 区分软链接和硬链接前先来学习下i节点和block数据块 一块分区要想使用需要做2步操作:
    ?1、将分区分成等大小的block块,一般为4k,用来记录文件的数据
    ?2、在分区起始位置建一个i节点表,里面包含文件元数据(-rw-r--r--. 1 root root 0 May 19 14:53 f1 文件类型、权限、所属着、创建时间等)和inode节点号,在同一个分区中i节点是唯一的,每一个文件都有不同的i节点。
  • 访问一个文件需要先查找i节点表,然后寻找数据块。假设有一个dir文件夹,下面有file1、file2,dir对应的数据块中保存的只有file1、file2的名称和i节点,其数据有file1、file2对应i节点去数据块中搜索。一个目录是目录下的文件名和文件inode号之间的映射 技术图片
  • 硬链接:
    [[email protected] data]#ln txt txt.hard # 创建硬链接
    [[email protected] data]#ll -i
    total 8
    67 -rw-r--r--. 2 root root 9 May 19 15:46 txt
    67 -rw-r--r--. 2 root root 9 May 19 15:46 txt.hard
    1. 使用ll -i可查看文件inode,txt和txt.hard
      有相同的节点号,这也是就是说明硬链接和原文件是同一个,相当于一间房子的2个门,删除其中一个不影响里面的数据
    2. 不同分区同一个inode号对应的文件不同,这就要求硬链接不能跨分区
    3. 目录存放的是目录下的文件名和文件inode号之间的映射,如果子目录对父目录设置硬链接会产生递归,硬链接不能对目录使用
  • 软链接或者叫做符号链接:
    [[email protected] data]#ln -s txt txt.soft #创建软链接
    [[email protected] data]#ll -i
    total 4
    67 -rw-r--r--. 1 root root 9 May 19 15:46 txt
    68 lrwxrwxrwx. 1 root root 3 May 19 16:00 txt.soft -> txt
    [[email protected] data]#echo 111 >> txt.soft
    [[email protected] data]#cat txt.soft 
    12312xxx
    111
    [[email protected] data]#cat txt
    12312xxx
    111

    技术图片

  • 可以看到软链接和原文件inode不一样,他们是不同文件,修改软链接原文件也改变,删除原文件软链接不可用,作用类似windows中的快捷方式,一个符号链接的内容是它引用文件的名称
    可以对目录进行
    可以跨分区
    指向的是另一个文件的路径;
    其大小为指向的路径字符串的长度;不增加或减少目标文件inode的引用计数

    软链接访问文件 --> 链接文件对应的inode -->链接文件的block记录的是源文件的inode --> 源文件inode --> 源文件数据

    • 总结硬链接和软链接区别
      1. 本质:硬链接:同一个文件多个名字,软链接是不同文件
      2. 能否跨分区: 软链接可以跨分区
      3. 能否用于目录:软连接可用于目录
      4. inode号:硬链接inode相同,软链inode不同
      5. 链接数:创建硬链接会增加链接数
      6. 文件类型 :软链接是链接文件,硬链接是普通文件
      7. 相对路径:软件链接相对路径是相对链接文件路径,不是相对当前目录的路径 可参考截图file1在/目录下
        技术图片

    以上是关于详解软链接和硬链接的主要内容,如果未能解决你的问题,请参考以下文章

    软链接和硬链接详解

    详解软链接和硬链接

    linux命令大全之ln命令详解(创建软链接和硬链接)

    理解inode 以及 软链接和硬链接概念区分

    软链接和硬链接

    软链接和硬链接