详解软链接和硬链接

  • 区分软链接和硬链接前先来学习下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号之间的映射 详解软链接和硬链接
  • 硬链接:
    [root@centos1 data]#ln txt txt.hard # 创建硬链接
    [root@centos1 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号之间的映射,如果子目录对父目录设置硬链接会产生递归,硬链接不能对目录使用
  • 软链接或者叫做符号链接:
    [root@centos1 data]#ln -s txt txt.soft #创建软链接
    [root@centos1 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
    [root@centos1 data]#echo 111 >> txt.soft
    [root@centos1 data]#cat txt.soft 
    12312xxx
    111
    [root@centos1 data]#cat txt
    12312xxx
    111

    详解软链接和硬链接

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

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

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

猜你喜欢

转载自blog.51cto.com/14322729/2396960