在linux系统中,链接分两种 :一种被称为硬链接(Hard Link),另一种被称为符号链接或软链接(Symbolic Link)。

硬链接与软链接 是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。并让 Linux 普通用户和系统管理员正确使用硬链接与软链接,帮助文件系统开发者获取 inode 的相关知识

iNode与block理解参考博文:

Linux文件与目录

现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念。目录使文件可被分类管理,且目录的引入使 Linux 的文件系统形成一个层级结构的目录树。清单 1.所示的是普通 Linux 系统的顶层目录结构,其中 /dev 是存放了设备相关文件的目录。

硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.

软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.

Linux顶层目录结构

 /              根目录
├── bin     存放用户二进制文件
├── boot    存放内核引导配置文件
├── dev     存放设备文件
├── etc     存放系统配置文件
├── home    用户主目录
├── lib     动态共享库
├── lost+found     文件系统恢复时的恢复文件
├── media   可卸载存储介质挂载点
├── mnt     文件系统临时挂载点
├── opt     附加的应用程序包
├── proc    系统内存的映射目录,提供内核与进程信息
├── root    root 用户主目录
├── sbin    存放系统二进制文件
├── srv     存放服务相关数据
├── sys     sys 虚拟文件系统挂载点
├── tmp     存放临时文件
├── usr     存放用户应用程序
└── var     存放邮件、系统日志等变化文件

软链接和硬链接的区别与联系

下面是在我理解的基础上画的模型

软链接:                                                                          硬链接:

                               

硬链接(hard link) ln 

UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接。它可以使得单个程序对同一文件使用不同的名字。这样的好处是文件系统只存在一个文件的副本。系统简单地通过在目录中建立一个新的登记项来实现这种连接。该登记项具有一个新的文件名和要连接文件的inode号(inode与原文件相同)。不论一个文件有多少硬链接,在磁盘上只有一个描述它的inode,只要该文件的链接数不为0,该文件就保持存在。硬链接不能对目录建立硬链接!

硬连接是直接建立在节点表上的(inode),建立硬连接指向一个文件的时候,会更新节点表上面的计数值。举个例子,一个文件被连接了两次(硬连接),这个文件的计数值是3,而无论通过3个文件名中的任何一个访问,效果都是完全一样的,但是如果删除其中任意一个,都只是把计数值减1,不会删除实际的内容的,(任何存在的文件本身就算是一个硬连接)只有计数值变成0也就是没有任何硬连接指向的时候才会真实的删除内容。

软链接(symbolic link) ln-s

我们把符号链接称为软链接,它是指向另一个文件的特殊文件,这种文件的数据部分仅包含它所要链接文件的路径名。软链接是为了克服硬链接的不足而引入的,软链接不直接使用inode号作为文件指针,而是使用文件路径名作为指针(软链接:文件名 + 数据部分-->目标文件的路径名)。软件有自己的inode,并在磁盘上有一小片空间存放路径名。因此,软链接能够跨文件系统,也可以和目录链接!其二,软链接可以对一个不存在的文件名进行链接,但直到这个名字对应的文件被创建后,才能打开其链接。

那么如何判断是硬链接,软链接,源文件呢?其实不难

创建方法:

ln mo linka
ln mo linkb
ln -s mo linkc

查看方法:

ll
-rw-r--r--  3 root root 11260 Jul 13 19:19 linka//硬连接
-rw-r--r--  3 root root 11260 Jul 13 19:19 linkb//硬连接
lrwxrwxrwx  1 root root     5 Jul 18 05:19 linkc -> mo//软连接
-rw-r--r--  3 root root 11260 Jul 13 19:19 mo//原文件

区别:
软链接只是指向原文件的名字;
创建软连接时创建一个文件,文件的内容就是原来的文件的地址;
如果删掉原文件,则找不到软连接实际连接的文件了。

相反,创建硬联接时创建一个inode,inode指向原文件,文件的连接数加1;
硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。
即如果删掉原文件,只是把连接数减1,如果连接数为0,则文件仍然被删除,否则硬连接指向的文件仍然存在。
如果删掉硬连接也是如此。

由于这个原因,硬链接不能连接两个不同文件系统上的文件。

总结

硬链接: 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
软链接: 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块,访问时替换自身路径。

硬链接与软链接 (符号链接)的区别与联系相关推荐

  1. 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)

    通过 mklink 命令可以创建文件或文件夹的链接,而这种链接跟快捷方式是不一样的.然而我们还可能会遇到其使用过程中的一些坑,本文将整理这些坑并提供解决方法. 0x00 背景介绍:mklink mkl ...

  2. Linux可以对目录进行硬链接,Linux硬链接与软链接原理及用法解析

    在linux系统中有种文件是链接文件,可以为解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(hard link),另一种是软链接或者也称为符号链接(symbolic link). 硬链接概念 ...

  3. Linux 硬链接和软链接的区别

    硬链接和软链接的区别 Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user ...

  4. LInux软硬链接概念,03硬链接和软链接的区别和联系

    首先我们需要了解linux下硬链接以及软连接的基本概念. 硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用. 软链接:也称为符号链接,新建的文件以"路径& ...

  5. 【批处理DOS-CMD命令-汇总和小结】-符号链接、硬链接、软链接、目录联结(mklink)

    以下的测试环境是win10教育版. 参考来源 windows快捷方式,符号链接,软链接和硬链接 关于mklink的/D /J 区别_notback的博客-CSDN博客_mklink 区别 Window ...

  6. 硬链接与软链接的区别

    1.1 硬链接与软链接的总结 01:硬链接文件的创建:ln 源文件 硬链接文件(不能事先存在) 02:软链接文件的创建:ln -s 源文件 软链接文件(不能事先存在) 03:目录不能创建硬链接文件,但 ...

  7. 硬链接和软链接的区别

    原理上: 硬链接(hard link):文件A是文件B的硬链接,则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件 ...

  8. linux硬链接与软链接

    详细文章链接:https://www.cnblogs.com/crazylqy/p/5821105.html (上面这个也是转载的!) 区别: 1.硬链接原文件/链接文件公用一个inode号,说明他们 ...

  9. php 删除硬链接,RHCE系列之文件管理----硬链接和软链接

    Linux 文件系统最重要的特点之一是它的文件链接. 链接是对文件的引用,这样你可以让文件在文件系统中多处被看到. 在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行. ...

最新文章

  1. AlertDialog对话框
  2. canvas学习绘制扇形
  3. 微软白皮书发布:在IIS7.5中用Service Bus端点寄宿WCF服务
  4. 用Python实现智能推荐!某音,某宝都是智能推荐的,你都知道吗?
  5. 演练 鼠划图片上变亮的效果 1022
  6. JavaScript的类型自动转换高级玩法JSFuck
  7. 10许可证即将到期_重要公告:这些企业,你们的证到期啦
  8. 9招让你皮肤迅速白嫩 - 健康程序员,至尚生活!
  9. Lync Server 2010企业版系列PART7:部署前端
  10. XenCenter6.2 配置ISO库
  11. 基于51单片机的智能温控风扇proteus仿真原理图程序设计
  12. win7 计算机打不开搜狗,Win7电脑搜狗输入法不见了如何解决?
  13. [Nginx] 配置Nginx绑定域名、代理端口
  14. MySQL 5.6 (Win7 64位)下载、安装与配置图文教程
  15. python读取文件夹下所有图片
  16. 【linux】循序渐进学运维-基础篇-修复文件系统实战
  17. 电子科大信软互+班 程算I 2021机考真题
  18. 百度搜索排名API接口PC返回JSON数据格式
  19. 红酒的色香味怎么产生的
  20. Datalogic,50年的成功

热门文章

  1. 盘式滑环对材料的要求
  2. matlab练习程序(全景图到穹顶图)
  3. 一些电子元器件的重量
  4. 通过图片地址上传到七牛云
  5. 【IIOT】西门子PLC数采之S7-200
  6. WinPE工具箱功能
  7. 关于WINCE下输入法的问题的解决方法
  8. QT显示视频-QVideoWidget
  9. jupyter c++ xeus-cling指定-D选项
  10. qt 3d迷宫游戏_类似《纪念碑谷》的好游推荐,这5款独立游戏你玩过没?