linux查看所有软链接_Linux中的软链接和硬链接
问题出现
问题1:Linux中软链接和硬链接的区别?
问题2:Linux系统内部是通过⽂件名访问⽂件的吗?
基础铺垫
平时在Linux系统中,我们都是通过⽂件名打开⽂件。但是Linux系统内部并不使⽤⽂件名,⽽是通过inode即节点索引来识别⽂件。我们通过⽂件名打开⽂件,只是表像。实际系统会按照如下去做。
1.系统是先到这个⽂件名对应的inode号码,
2.通过inode号码获取inode信息,
3.然后根据inode信息获取⽂件数据所在的block,读取数据。
很多时候,我们要透过现象寻问题的本质。
什么是软链接
软链接也叫符号链接(symbolic link),符号链接是指通过创建⼀个特殊类型的⽂件来起作⽤,该⽂件包含了指向引⽤⽂件或⽬录的⽂本指针。列举个windows⾥⾯的例⼦就明⽩了,与windows系统下的快捷⽅式⾮常相似。
将内容写进符号链接⾥,那这些内容也会同样写⼊引⽤⽂件。⽽当删除⼀个符号链接的时候,删除的
只是符号链接⽽没有删除⽂件本⾝。⽽如果先删除了⽂件,该链接依旧存在,却不会指向任何⽂件。但是你打开该链接,就会报错“NO such file or directory”
软链接的两个⽂件的inode号码是不⼀样的
如何创建软链接
1.⾸先在⽬录下创建fileB⽂件,写上i am askcto
[root@ky35z ask]# vi fileB
2.使⽤命令ln -s item link(item可以是⽂件也可以是⽬录)
[root@ky35z ask]# ln -s fileB fileB-sym
3.查看两个⽂件的inode号码
[root@ky35z ask]# ls -i fileB fileB-sym
1446188 fileB 1446185 fileB-sym
4.查看两个⽂件内容
[root@ky35z ask]# cat fileB
i am askcto
[root@ky35z ask]# cat fileB-sym
i am askcto
⽂件fileB和软链接fileB-sym的inode节点号码不⼀致。符号链接fileB-sym是包含了指向⽬标⽂件的⽂本指针。
[root@ky35z ask]# ls -l
lrwxrwxrwx 1 root root 5 Jan 7 21:14 fileB-sym -> fileB
什么是硬链接
硬链接,可以想象⽂件是由两部分组成的,⼀部分是⽂件内容,另外⼀部分是⽂件名称。创建硬链接时,实际上是创建了额外的名称,这些名称都指向了同⼀数据部分。系统会分配⼀系列的盘块给所谓的索引节点(inode),该节点随后与⽂件名称建⽴关联。因此,每个硬链接都指向包含⽂件内容的具体索引节点。
也就是说多个⽂件指向的是同⼀个inode号码,⽤不同的⽂件名访问,系统内部到的都是相同的⼀个inode节点,所以访问的是同样的内容。对⽂件内容修改,会影响到所有⽂件名,但是删除⼀个⽂件名,不会影响另外⼀个⽂件的访问。
如何创建硬链接
1.⾸先在⽬录下创建fileA⽂件,写上i am coder
[root@ky35z ask]# vi fileA
2.使⽤命令ln file link
[root@ky35z ask]# ln fileA fileA-hard
3.查看两个⽂件的inode号码
[root@ky35z ask]# ls -i fileA fileA-hard
1446187 fileA 1446187 fileA-hard
4.查看两个⽂件内容
linux查看当前文件夹内容[root@ky35z ask]# cat fileA
i am coder
[root@ky35z ask]# cat fileA-hard
i am coder
软链接和硬链接的区别
1.硬链接不能引⽤⾃⾝⽂件系统之外的⽂件。也就是说,链接不能引⽤与该链接不在同⼀磁盘分区的⽂件。
2.硬链接不能引⽤⽬录。软链接即可以是⽂件也可以是⽬录。
3.上⾯的例⼦中,软链接fileB-sym是指向⽂件fileB的⽂件名,它们的节点号码不同。⽽硬链接fileA-hard指向的是fileA的节点号码。它们的节点号码相同。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论