Linux中硬链接和软链接的区别与联系!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中硬链接和软链接的区别与联系!相关的知识,希望对你有一定的参考价值。

参考技术A   链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。在Linux操作系统中,链接被分为两种:软链接(SoftLink,符号链接)和硬链接(HardLink)。那么什么是软链接?什么是硬链接?Linux中软链接和硬链接之间有什么区别和联系?以下是详细的内容介绍。

  为解决文件的共享使用,Linux系统引入了两种链接:硬链接和软链接。在Linux中,元数据中的inode号才是文件的唯一标识而非文件名,文件内容要通过inode号来寻找,犹如交通指示牌一样,指示着数据找寻的方向。

  硬链接(Hard Link)

  A和B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除其中一个,对另外一个没有任何影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。

  注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块只有在inode节点链接数减少为0的时候才会被系统回收。

  软链接(Soft Link)

  A是B的软链接,A的目录项中的inode节点号与B的目录项中的节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名。A和B之间是主从关系,如果B被删除了,A依然存在,但指向的是一个无效的链接。

  Linux中软链接和硬链接之间有什么区别和联系?

  概念不同:

  软链接可以理解成快捷方式,和原文件的inode号不一样,它和Windows下的快捷方式的作用是一样的,软链接数据块中记录的亦是相对路径指向。

  硬链接和原文件对应一个inode,就是对应一个文件,可以理解成一个文件有几个别名。

  用法不同:

  软链接可以理解成快捷方式,也清楚知道原文件在哪里。它和Windows下的快捷方式的作用是一样的,和Windows一样,删除源文件,快捷方式也就无法使用了。

  硬链接可以看成一个备份,但并没有增加空间,因为文件就一个,这种可以防止源文件删除后不能使用问题;同时也有局限性,不能对目录和跨文件系统使用。

  语法格式(ln):

  硬链接:ln 源文件 链接名

  软链接:ln -s 源文件 链接名

  注意:链接的源文件路径要写绝对路径,否则会报错。

Linux硬链接和软连接的区别与总结

图示软硬链接的区别

技术分享

有关硬链接的总结

  1. 具有相同inode节点号的多个文件互为硬链接文件;
  2. 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;
  3. 只有删除了源文件和所有对应的硬链接文件,文件实体才会被删除;
  4. 硬链接文件是文件的另一个入口;
  5. 可以通过给文件设置硬链接文件来防止重要文件被误删;
  6. 创建硬链接命令 ln 源文件 硬链接文件;
  7. 硬链接文件是普通文件,可以用rm删除;
  8. 对于静态文件(没有进程正在调用),当硬链接数为0时文件就被删除。注意:如果有进程正在调用,则无法删除或者即使文件名被删除但空间不会释放。

有关软链接的总结

  1. 软链接类似windows系统的快捷方式;
  2. 软链接里面存放的是源文件的路径,指向源文件;
  3. 删除源文件,软链接依然存在,但无法访问源文件内容;
  4. 软链接失效时一般是白字红底闪烁;
  5. 创建软链接命令 ln -s 源文件 软链接文件;
  6. 软链接和源文件是不同的文件,文件类型也不同,inode号也不同;
  7. 软链接的文件类型是“l”,可以用rm删除。

硬链接和软链接的区别

原理上,硬链接和源文件的inode节点号相同,两者互为硬链接。软连接和源文件的inode节点号不同,进而指向的block也不同,软连接block中存放了源文件的路径名。
实际上,硬链接和源文件是同一份文件,而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接。

以上是关于Linux中硬链接和软链接的区别与联系!的主要内容,如果未能解决你的问题,请参考以下文章

Linux中硬链接文件和软链接文件有啥区别?

linux的硬链接和软连接的区别

linux中软链接和硬链接的区别与小结

Linux的硬链接和软连接

linux下软链接与硬链接的区别

Linux硬链接和软连接的区别与总结