问题问题一:Linux中的软链接和硬链接有什么区别?问题二:Linux系统内部是通过文件名来访问文件的吗?基础基础通常在Linux系统中,我们通过文件名打开文件。但是Linux系统内部并不使用文件名,而是通过inode,即节点索引来标识文件。我们通过文件名打开文件,它只是一种表示。实际系统会做如下操作。1.系统首先找到文件名对应的inode号,2.通过inode号获取inode信息,3.然后根据inode信息获取文件数据所在的block,读取数据。很多时候,我们要通过现象来寻找问题的本质。什么是软链接?软链接也称为符号链接。符号链接通过创建一种特殊类型的文件来工作,该文件包含指向引用文件或目录的文本指针。举个windows中的例子就明白了,和windows系统中的快捷方式很相似。将内容写入符号链接,则内容也将写入引用文件。删除符号链接时,只删除符号链接,不删除文件本身。而如果文件先被删除,链接仍然存在,但不会指向任何文件。但是打开链接会报错“NOsuchfileordirectory”软链接的两个文件的inode号不同如何创建软链接1.先在目录下创建一个fileB文件,写入我是askcto[root@ky35zask]#vifileB2。使用命令ln-sitemlink(item可以是文件也可以是目录)[root@ky35zask]#ln-sfileBfileB-sym3.查看两个文件的inode号[root@ky35zask]#ls-ifileBfileB-sym1446188fileB1446185fileB-sym4.查看两个文件的内容[root@ky35zask]#catfileBiamaskcto[root@ky35zask]#catfileB-symiamaskctofileB和softwarelinkfileB-sym的inode节点号不一致。符号链接fileB-sym包含指向目标文件的文本指针。[root@ky35z问]#ls-llrwxrwxrwx1rootroot5Jan721:14fileB-sym->fileB什么是硬链接硬链接,你可以想象文件由两部分组成,一部分是文件内容,另一部分是文件名。当您创建一个硬链接时,您实际上创建了额外的名称,这些名称都指向相同的数据部分。系统将一系列磁盘块分配给所谓的索引节点(inodes),然后这些节点与文件名相关联。因此,每个硬链接都指向包含文件内容的特定inode。也就是说,多个文件指向同一个inode号,用不同的文件名访问。发现系统内部有相同的inode节点,所以访问的是相同的内容。修改文件内容会影响所有文件名,但删除一个文件名不会影响另一个文件的访问。如何创建硬链接1.首先在目录下创建一个fileA文件,写iamcoder[root@ky35zask]#vifileA2。使用命令lnfilelink[root@ky35zask]#lnfileAfileA-hard3。查看二文件的inode号[root@ky35zask]#ls-ifileAfileA-hard1446187fileA1446187fileA-hard4.查看两个文件的内容[root@ky35zask]#catfileAiamcoder[root@ky35zask]#catfileA-hardiamcoder软链接和硬链接的区别1.硬链接不能引用自己文件以外的文件系统。也就是说,链接不能引用与链接不在同一磁盘分区上的文件。2.硬链接不能指向目录。软链接可以是文件也可以是目录。3、在上面的例子中,软链接fileB-sym是指向文件fileB的文件名,它们的节点号是不同的。硬链接fileA-hard指向fileA的节点号。它们具有相同的节点号。有问题可以微信找我公众号:
