Linux文件链接hard link与symbolic link
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的更多相关文章
- 菜鸟学Linux - Hard Link与Symbolic Link
在学习Hard Link与Symbolic Link之前,需要大概了解一下inode与data block.在Linux的文件系统中,一个文件对应一个inode与若干个data block.inode ...
- Windows中的硬链接和软链接(hard link 和 Symbolic link)
先来了解一下Linux中的硬链接和软链接: Linux中的硬链接和软链接 Windows中的硬链接和软链接: 硬链接 从Windows NT4开始,NTFS文件系统引入了HardLink这个概念,它让 ...
- 转: linux文件链接(软链接和硬链接)
链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l ...
- linux文件链接
我的github,欢迎关注,分享知识与技术 链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(HardLink)和软链接(Soft Link), ...
- Linux - 软硬链接,hard link and symbolic link
- Linux文件I/O
文件描述符(File Descriptor) a small, nonnegative integer for use in subsequent system calls (read(2), wri ...
- LINUX文件操作命令
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- (转)Linux 文件和目录的属性
linux 文件属性与权限 原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/ ...
- linux文件描述符、软硬连接、输入输出重定向
引用链接:https://blog.csdn.net/qq769651718/article/details/79459346 文件描述符的作用: 文件描述符是linux操作系统中特有的概念.其相当于 ...
随机推荐
- bzoj 3566: [SHOI2014]概率充电器
Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器:"采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率 ...
- Cleaner, more elegant, and wrong(msdn blog)
Cleaner, more elegant, and wrong Just because you can't see the error path doesn't mean it doesn't e ...
- Web API系列之一 Rest简介
1.REST:Representational State Transfer表征状态转移,是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格.REST设计风格有如下几点: ...
- Mobiscroll的介绍【一款兼容PC和移动设备的滑动插件】
Mobiscroll是一个用于触摸设备的日期和时间选择器,它的使用不会改变HTML5.PhoneGap以及混合应用的原生用户体验.作为一款jQuery滑动选择插件,用户可以自定义主题样式,为自己的移动 ...
- npm 项目更换目录后无法启动
问题描述: 使用 Vue-cli 创建的项目,当文件移动到其他目录后,无法正常启动,报错信息如下: 分析原因: npm 项目,在安装依赖(node_modules)的时候,会记录当前的文件路径.当路径 ...
- MicroPython教程之TPYBoard v102 CAN总线通信
0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议.CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管 ...
- Java学习笔记8---类的静态成员变量与静态成员方法的访问与调用方式
(注:静态变量修改为静态成员变量,静态方法改为静态成员方法) 静态成员变量又称类变量,静态成员方法又称类方法,它们统称为静态成员或类成员.静态成员由static修饰,是属于整个类的,所有的对象共享这些 ...
- DM企业建站系统v201710 sql注入漏洞分析 | 新版v201712依旧存在sql注入
0x00 前言 本来呢,这套CMS都不想审的了.下载下来打开一看,各种debug注释,排版烂的不行. 贴几个页面看看 感觉像是新手练手的,没有审下去的欲望了. 但想了想,我tm就是新手啊,然后就继续看 ...
- Hyperledger Fabric 1.0 从零开始(九)——Fabric多节点集群生产启动
7:Fabric多节点集群生产启动 7.1.多节点服务器配置 在生产环境上,我们沿用4.1.配置说明中的服务器各节点配置方案. 我们申请了五台生产服务器,其中四台服务器运行peer节点,另外一台服务器 ...
- 表单验证插件--formvalidation
表单验证是一个非常基础的功能,当你的表单项少的时候,可以自己写验证,但是当你的表单有很多的时候,就需要一些验证的插件.今天介绍一款很好用的表单验证插件,formvalidation.其前身叫做boot ...