我是靠谱客的博主 虚拟汉堡,最近开发中收集的这篇文章主要介绍关于软链接与硬链接区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

软链接:软链接不占用磁盘空间,源文件删除则软链接失效。

硬链接:硬链接只能链接普通文件,不能链接目录。

 

在linux中创建软链接与硬链接的方法格式为:

硬链接:ln 源文件 链接文件
软链接:ln -s 源文件 链接文件
  1. 查看文件,-i查看文件的inode号,左边第一列内容

  2. $ ls -li

  3. 25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 hard

  4. 25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 myfile

  5. 25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft -> myfile

硬链接与源文件是同一个inode号,软连接是重新建立一个inode号,但文件属性前加l,与源文件和硬链接文件不属于同一类型。 

 

在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。

  • 软连接,其实就是新建立一个文件,这个文件就是专门用来指向别的文件的(那就和windows 下的快捷方式的那个文件有很接近的意味)。软链接产生的是一个新的文件,但这个文件的作用就是专门指向某个文件的,删了这个软连接文件,那就等于不需要这个连接,和原来的存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接不可用(cat那个软链接文件,则提示“没有该文件或目录“)

  • 硬连接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已,也因此硬链接是不可以跨越文件系统的。相反是软连接会重新建立一个inode,当然inode的结构跟其他的不一样,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软连接将变得毫无意义。而硬链接删除的时候,系统调用会检查inode link count的数值,如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
  • 硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
  • 软链接可以跨文件系统,硬链接不可以;
  • 软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);
  • 软链接可以对目录进行连接,硬链接不可以。
  • 两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。
  • 使用 -s 开关可以创建软链接。

//本博客内容用以记录各种知识点,大部分为网络搜集,来历不明,侵删。

 

最后

以上就是虚拟汉堡为你收集整理的关于软链接与硬链接区别的全部内容,希望文章能够帮你解决关于软链接与硬链接区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部