Linux中文件链接有两种方式,一种是hard link,又称为硬链接;另一种是symbolic link,又称为符号链接。要区分两者的不同要回顾Linux常用的ext2文件系统。这种文件系统使用inode与block,其中inode记录文件数据所存储的block序号,而block用于存储数据。至于跟进一步的文件系统,分割盘,block group,meta data什么的这里不讲,有兴趣的同学参阅《鸟哥的Linux私房菜》。

硬盘的硬件以inode和block分割,但我们直观可见的目录如何存储于硬盘中。这里我们要把目录也看做文件,硬盘会分配一个inode和block,如果是文件系统的根目录,一般分配的inode编号为2,方便系统启动时查找。目录下一层的档案名和对应的inode编号存储于该层目录inode对应的block中。这里特别强调一点,目录是一个树形结构。我们这里谈到的inode与block只与树的一层对应。



如图中所示,root作为一个目录,会对应一个inode,这个inode对应的block会存储file1,file2和direction1的inode和文件名和目录名,但不会存储file3和file4的inode和文件名。所以每一个目录都对应一个inode和block,也只存储自己之下一层以内的文件和目录。只与再下面的文件可以通过打开direction1的inode对应block查看。目录之间这种链式关系称为挂载。direction1就挂载在root目录下。

有了以上的认识之后我们再看什么是硬链接与符号链接。首先附上鸟叔的两张图(侵删)





这两种连接方式的不同就在于新建立的目录名对应的inode指向什么,硬链接在文件block中新建立一条记录,记录文件名与数据对应inode,符号链接建立一条记录保存文件所在路径。进一步讲,硬链接指向数据,符号链接指向目录。这种不同的链接方法直接影响了文件inode节点数。硬链接会增加文件inode节点数,但符号链接这不会影响。倘使我们删除一个硬链接,只要inode连接数不为0,数据就不会删除。其他的硬链接还是可以链接到数据的。但符号链接只连接了这个文件所对应的文件名所在位置,不增加文件的inode节点数。倘使我们删除原来的文件名,并使得inode节点数为0(没有其他的硬链接),这个数据就被删除了。尽管这个符号链接还存在,但是已经不能调用数据了。

Linux文件链接hard link与symbolic link的更多相关文章

  1. 菜鸟学Linux - Hard Link与Symbolic Link

    在学习Hard Link与Symbolic Link之前,需要大概了解一下inode与data block.在Linux的文件系统中,一个文件对应一个inode与若干个data block.inode ...

  2. Windows中的硬链接和软链接(hard link 和 Symbolic link)

    先来了解一下Linux中的硬链接和软链接: Linux中的硬链接和软链接 Windows中的硬链接和软链接: 硬链接 从Windows NT4开始,NTFS文件系统引入了HardLink这个概念,它让 ...

  3. 转: linux文件链接(软链接和硬链接)

    链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l ...

  4. linux文件链接

    我的github,欢迎关注,分享知识与技术 链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(HardLink)和软链接(Soft Link), ...

  5. Linux - 软硬链接,hard link and symbolic link

  6. Linux文件I/O

    文件描述符(File Descriptor) a small, nonnegative integer for use in subsequent system calls (read(2), wri ...

  7. LINUX文件操作命令

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  8. (转)Linux 文件和目录的属性

    linux 文件属性与权限 原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/ ...

  9. linux文件描述符、软硬连接、输入输出重定向

    引用链接:https://blog.csdn.net/qq769651718/article/details/79459346 文件描述符的作用: 文件描述符是linux操作系统中特有的概念.其相当于 ...

随机推荐

  1. 重启网络服务时 Bringing up interface eth0

    重启网络服务时报错:  Bringing up interface eth0: Error:Connection activation failed:Device not managed by Net ...

  2. ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料

    本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/  谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...

  3. Django_form

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 1.创建Form类 # 创建一个类 from ...

  4. MySQL查询(进阶)(每个标点都是重点)

    MySQL 是工作中很普遍的需要用到的,所以必须掌握,而 之前我们一直说的都是怎么存. 你只会存不会取有个屁用.所以希望大家在如何查询读取数据这方面多下点功夫. 这篇和上一篇都是干货,我也是第一次学. ...

  5. 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控

     zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加. 由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务 ...

  6. AspNet Core Web 应用程序的启动(有关 Program.cs类/ Startup.cs类 ) 当项目中干掉 Startup.cs 类如何设置启动 配置等等

    .有关怎么创建Core MVC/API 这里就不说了,前段时间的博客有说过: 1.  项目生成后会有如图所示两个类 Program类Startup类 2. Startup类  初始内容 public ...

  7. dt dl列表布局

    项目需要中 左边是房屋地址,右边显示几套房屋,如下图显示 ============ 开始想到使用 div标签,里面嵌套几个span,但是不利于对齐显示,一行还可以,多行了不方便 查找使用dl dt布局 ...

  8. python 打印几行空行、 打印不换行

    2.x版本中使用print '\n' * n #n为行数 3.x版本中使用print('\n' * n) #n为行数 print 'Hello',  :不会换行.[加上逗号(,)]

  9. 小程序wxss和css3的区别

    经过设置发现,微信小程序中wxss并不能完全支持css3的全部功能. 总结记录在此文中,以免忘记. 0 . wxss不能直接通过css3中的background-image属性来设置显示的背景图片. ...

  10. CSS(二) 颜色 盒模型 文字相关 border

    一.颜色 rgb(r,g,b)  rgb取值 0-255   分别是 色光三元色  red green blue rgba(r,g,b,a) rgb同上  a 是 alpha  代表透明度 colot ...