软链接、硬链接(详解)

目录:

《》 链接文件
《》创建链接文件
《》软连接和硬链接区别

链接文件:

  • 硬链接:一个inode对应多个文件名则为硬链接

    • 不同的文件名对应相同的inode
    • 文件内容相同
    • 不能跨文件系统
    • (其实就是给一个inode再起一个别名)
    • 删除一个硬链接并不影响其他相同inode号的文件
    • 只能给文件建立硬链接,不给目录建立硬链接
  • 软连接:若文件用户数据块的内容是另一文件所在的路径则为软连接

    • 一个文件名对应一个inode
    • (在windows上叫做快捷方式)
    • 可以跨文件系统
    • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接不正常,被称为死链接。

创建链接文件:
硬链接:(inode相同,文件内容相同)

[root@rhel1 ~]# ln a a.hard
[root@rhel1 ~]# ls -i
 41156636 a       41156636 a.hard
 41156610 install.log      41156621 mysql     
 [root@rhel1 ~]# cat a
1
[root@rhel1 ~]# cat a.hard
1        

在这里插入图片描述
软链接:
(inode不同)
(如下图为正确的软连接)
在这里插入图片描述
软连接和硬链接区别

  • 软链接:指向原始文件所在的路径,又称为符号链接
  • 硬链接:指向原始文件对应的数据存储位置
  • 不能为目录建立硬链接文件
  • 硬链接与原始文件必须位于同一分区(文件系统)中
  • 既可以给文件也可以给目录创建软链接

(如下图为不正确的软连接)
因为软链接指向原始文件所在的路径,相当于windows中的快捷方式,将它移动到/tmp目录下时,此时这个a在创建软链接时是在root目录下,在/tmp目录下不能通过这个路径找到相对应的inode的,不能找到其元数据及其数据块,所以找不到内容,软链接不正确。
在这里插入图片描述
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

删除a对硬链接a.hard没有影响,
删除a对软链接a,link有影响。
在这里插入图片描述
解析:
对于硬链接,它 的数据块存放的其实就是inode,因为硬链接和原始文件具有相同的inode,相当于给原始文件的inode起别名,删除原始文件,对起了别名的文件(硬链接)没有影响。
而软连接,它的数据块存放原始文件的路径,删除原始文件,软链接就不能通过路径一层一层的找到对应的原始文件的inode,不能找到原始文件所对应的元数据,就找不到数据块,找不到其内容,所以这个软链接就不正常。

猜你喜欢

转载自blog.csdn.net/qq_42935487/article/details/88735952