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
2.使用命令ln -s item link(item可以是文件也可以是目录)
3.查看两个文件的inode号码
4.查看两个文件内容
文件fileB和软链接fileB-sym的inode节点号码不一致。符号链接fileB-sym是包含了指向目标文件的文本指针。
什么是硬链接 硬链接,可以想象文件是由两部分组成的,一部分是文件内容,另外一部分是文件名称。创建硬链接时,实际上是创建了额外的名称,这些名称都指向了同一数据部分。系统会分配一系列的盘块给所谓的索引节点(inode),该节点随后与文件名称建立关联。因此,每个硬链接都指向包含文件内容的具体索引节点。 也就是说多个文件指向的是同一个inode号码,用不同的文件名访问,系统内部找到的都是相同的一个inode节点,所以访问的是同样的内容。对文件内容修改,会影响到所有文件名,但是删除一个文件名,不会影响另外一个文件的访问。 如何创建硬链接 1.首先在目录下创建fileA文件,写上i am coder
2.使用命令ln file link
3.查看两个文件的inode号码
4.查看两个文件内容
软链接和硬链接的区别 1.硬链接不能引用自身文件系统之外的文件。也就是说,链接不能引用与该链接不在同一磁盘分区的文件。 2.硬链接不能引用目录。软链接即可以是文件也可以是目录。 3.上面的例子中,软链接fileB-sym是指向文件fileB的文件名,它们的节点号码不同。而硬链接fileA-hard指向的是fileA的节点号码。它们的节点号码相同。 有任何疑问可以微信公众号找我: (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |