加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux中的软链接和硬链接

发布时间:2022-11-08 10:34:09 所属栏目:Linux 来源:
导读:  问题出现

  问题1:Linux中软链接和硬链接的区别?

  问题2:Linux系统内部是通过文件名访问文件的吗?

  基础铺垫

  平时在Linux系统中,我们都是通过文件名打开文件。但是Linux系统内部并
  问题出现
 
  问题1:Linux中软链接和硬链接的区别?
 
  问题2:Linux系统内部是通过文件名访问文件的吗?
 
  基础铺垫
 
  平时在Linux系统中,我们都是通过文件名打开文件。但是Linux系统内部并不使用文件名,而是通过inode即节点索引来识别文件。我们通过文件名打开文件,只是表像。实际系统会按照如下去做。
 
  1.系统是先找到这个文件名对应的inode号码,
 
  2.通过inode号码获取inode信息,
 
  3.然后根据inode信息获取文件数据所在的block,读取数据。
 
  很多时候,我们要透过现象找寻问题的本质。
 
  什么是软链接
 
  软链接也叫符号链接(symbolic link),符号链接是指通过创建一个特殊类型的文件来起作用,该文件包含了指向引用文件或目录的文本指针。列举个windows里面的例子就明白了,与windows系统下的快捷方式非常相似。
 
  将内容写进符号链接里,那这些内容也会同样写入引用文件。而当删除一个符号链接的时候,删除的只是符号链接而没有删除文件本身。而如果先删除了文件,该链接依旧存在,却不会指向任何文件。但是你打开该链接linux软链接,就会报错“NO such file or directory”
 
  软链接的两个文件的inode号码是不一样的
 
  如何创建软链接
 
  1.首先在目录下创建fileB文件,写上i am askcto
 
  [[email?protected]?ask]#?vi?fileB
  2.使用命令ln -s item link(item可以是文件也可以是目录)
 
  [[email?protected]?ask]#?ln?-s?fileB?fileB-sym
  3.查看两个文件的inode号码
 
  [[email?protected]?ask]#?ls?-i?fileB?fileB-sym
  1446188?fileB??1446185?fileB-sym
  4.查看两个文件内容
 
  [[email?protected]?ask]#?cat?fileB
  i?am?askcto
  [[email?protected]?ask]#?cat?fileB-sym
  i?am?askcto
  文件fileB和软链接fileB-sym的inode节点号码不一致。符号链接fileB-sym是包含了指向目标文件的文本指针。
 
  [[email?protected]?ask]#?ls?-l
  lrwxrwxrwx?1?root?root???????5?Jan??7?21:14?fileB-sym?->?fileB
  什么是硬链接
 
  硬链接,可以想象文件是由两部分组成的,一部分是文件内容,另外一部分是文件名称。创建硬链接时,实际上是创建了额外的名称,这些名称都指向了同一数据部分。系统会分配一系列的盘块给所谓的索引节点(inode),该节点随后与文件名称建立关联。因此,每个硬链接都指向包含文件内容的具体索引节点。
 
  也就是说多个文件指向的是同一个inode号码,用不同的文件名访问,系统内部找到的都是相同的一个inode节点,所以访问的是同样的内容。对文件内容修改,会影响到所有文件名,但是删除一个文件名,不会影响另外一个文件的访问。
 
  如何创建硬链接
 
  1.首先在目录下创建fileA文件,写上i am coder
 
  [[email?protected]?ask]#?vi?fileA
  2.使用命令ln file link
 
  [[email?protected]?ask]#?ln?fileA?fileA-hard
  3.查看两个文件的inode号码
 
  [[email?protected]?ask]#?ls?-i?fileA?fileA-hard
  1446187?fileA??1446187?fileA-hard
  4.查看两个文件内容
 
  [[email?protected]?ask]#?cat?fileA
  i?am?coder
  [[email?protected]?ask]#?cat?fileA-hard
  i?am?coder
  软链接和硬链接的区别
 
  1.硬链接不能引用自身文件系统之外的文件。也就是说,链接不能引用与该链接不在同一磁盘分区的文件。
 
  2.硬链接不能引用目录。软链接即可以是文件也可以是目录。
 
  3.上面的例子中,软链接fileB-sym是指向文件fileB的文件名,它们的节点号码不同。而硬链接fileA-hard指向的是fileA的节点号码。它们的节点号码相同。
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!