软连接和硬链接

软连接和硬链接是面试Linux方面的时候,比较容易问到的一个问题,虽然比较简单,但是总是容易搞不清楚二者之间真正的区别在哪里,下面就来详细的解释一下二者之间的异同:

windows中的快捷方式,大家都比较熟悉,就像我们最常作的一个操作就是安装了一个windows软件,将软件的启动文件复制,然后以快捷方式的格式粘贴到桌面,这时候我们只需要双击桌面上的图标就可以启动这个软件了。同样,Linux中的快捷方式就是连接文件

**

首先我们介绍一下什么是连接文件:

**
在这里插入图片描述

向上面这种使用ll命令查看文件的长格式的时候,在文件权限的最前面第一个字符就表示了,这个文件属于什么类型的文件。

如何判断一个文件是连接文件?

  • l 开头的文件就是连接文件
  • 向上图中其他的 - 短横线这种的就是普通文件
  • 并且上面的长格式文件名中有一个箭头,表示的就是这个连接文件的源文件的名称和位置
  • 我们运行这个连接文件就相当于运行后面的passwd文件

同样下面图中的连接文件也是一样的,只不过上图是给普通文件创建的连接文件,下图是给一个目录创建的文件。
在这里插入图片描述
那么我们查看sxjy目录中的内容和/home/ss目录下的内容是一致的
在这里插入图片描述
软连接和硬链接的创建方式:

硬链接:

  • 命令格式:ln 源文件… 链接文件

  • 实质:一个文件对应多个文件名

     硬链接:一个inode号对应多个文件名
    

软连接:

扫描二维码关注公众号,回复: 9281389 查看本文章
  • 命令格式:ln -s 源文件…链接文件

  • 文件类型和权限肯定是lrwxrwxrwx

  • 实质:软连接是创建了一个新的文件,并且拥有自己的Inode号,通过这个Inode号找到另外一个文件名,
    再通过这个文件名找到其Inode号,再通过Inode号找到文件内容(数据)

     软连接两个文件的Inode号不同
    

区别:
除了上面创建软连接、硬链接时候的区别之外,其二者之间最大的区别就是删除原文件后,连接文件是否仍然生效的问题。

	因为Linux系统查看文件内容的过程就是通过文件名找到其inode,然后再从block中找到对应inode的数据块,从而输出数据到屏幕上

硬链接
硬链接是一个inode对应多个文件,也就是多个链接文件的inode都是相同的,那么当我们不论删除源文件还是其中的连接文件的时候,通过剩下的连接文件就可以访问到原来的数据,因为inode都是一样的。
在这里插入图片描述
软连接

软连接获取源文件内容(数据)的过程是:

  • 软连接是创建了一个新的文件,并且拥有自己的Inode号,通过这个Inode号找到另外一个文件名,
    再通过这个文件名找到其Inode号,再通过Inode号找到文件内容(数据)

  • 所以当我们将原文件删除之后,软连接文件就不能通过自己的inode找到源文件的文件名,也就获取不到源文件中的数据了
    在这里插入图片描述
    异常的现象就是下面这样:
    在这里插入图片描述

     其实上面的区别只要懂了Linux是如何读取文件内容的过程就很好理解了
    

最后补充一点,软连接、硬链接都不要文件系统,也就是说,连接文件和源文件最好都在同一个文件系统中;目录只能创建软连接,不能创建硬链接。

附:
查询文件inode的方法:

  • ls -i 命令
  • stat 命令
发布了33 篇原创文章 · 获赞 52 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_44714603/article/details/88713977