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操作系统中特有的概念.其相当于 ...
随机推荐
- [Find the last digit when factorial of A divides factorial of B]
Given two numbers A and B. The task is to compute the last digit of the resulting F, where F= B! / A ...
- 回顾2017系列篇(二):移动端APP设计趋势
移动端APP在2017年经历了诸多的变化, 人工智能.聊天式的界面.响应式设计.虚拟现实(VR)和增强现实(AR)让设计师不断面临新的挑战.研究表明,用户每天耗费在手机和平板上的平均时长为158分钟, ...
- Django学习日记02_项目环境
创建一个工程: django-admin.py startproject mySite 将会产生以下文件: mySite/ manage.py mySite/ __init_ ...
- Python,PyCharm2017安装教程,包含注册码
一,安装PyCharm 1.下载PyCharm 进入https://www.jetbrains.com/pycharm/download/#section=windows官网下载页面,可以到到PyCh ...
- php 运算符and or && || 的详解
想弄清这个问题,首先要了解这些运算符的优先级:了解后,我们才知道,逻辑运算和赋值运算的执行顺序: //and or 的优先级小于 = //&& || 的优先级大于 = //or-前面语 ...
- 不会PS如何自制简单线条、任意填充色的小图标
最近在做H5的开发中,需要用到一些简单的小图标,百度出来的图片,总是或多或少差了一些颜色.于是准备自己制作图片,PS是不会的,学习以及软件安装太费时,于是就准备用常见的软件来试着做一做. 在尝试了 w ...
- Python爬虫知识点一
一.入门知识: 1.1.HTTP简介HTTP = HyperText Transfer ProtocolURI = Uniform Resource IdentifierURL = Uniform R ...
- Java中的String类能否被继承?为什么?
不能被继承,因为String类有final修饰符,而final修饰的类是不能被继承的. Java对String类的定义: public final class String implements ja ...
- MapReduce工作原理流程简介
在MapReduce整个过程可以概括为以下过程: 输入 --> map --> shuffle --> reduce -->输出 输入文件会被切分成多个块,每一块都有一个map ...
- PE文件详解(八)
本文转载自小甲鱼PE文件详解系列教程原文传送门 当应用程序需要调用DLL中的函数时,会由系统将DLL中的函数映射到程序的虚拟内存中,dll中本身没有自己的栈,它是借用的应用程序的栈,这样当dll中出现 ...