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操作系统中特有的概念.其相当于 ...
随机推荐
- php html5 文件上传 (原创)
今天自己写了一个HTML5+FileReader+php 的文件上传,ajax异步上传也支持 git 下载:git clone https://github.com/jiechengyang/HTML ...
- lesson - 10 课程笔记
CTRL+C CTRL+D :前者用于结束一个程序,后者用于结束终端输入. --符号 *:匹配任意长度的任意字符 ?:匹配任意一个字符 #: shell 中表注释 \: 脱意符号 []:任意属于字符组 ...
- Webpack 2 视频教程 008 - WDS 端口号等配置相关
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- AJAX结合PHP整理复习
Ajax主要的功能是实现了浏览器端 异步 访问服务器:通过浏览器的XMLHttpRequest对象发出小部分数据,与服务端进行交互,服务端返回小部分数据,然后更新客户端的部分页面. 下图是一次请求成功 ...
- Spark源码剖析(八):stage划分原理与源码剖析
引言 对于Spark开发人员来说,了解stage的划分算法可以让你知道自己编写的spark application被划分为几个job,每个job被划分为几个stage,每个stage包括了你的哪些代码 ...
- 微信小程序之页面路由
路由方式 简介 对于路由的触发方式以及页面生命周期函数如下: 路由方式 触发时机 路由前页面 路由后页面 初始化 小程序打开的第一个页面 onLoad, onSHow 打开新页面 调用 API w ...
- Tomcat与SpringMVC结合分析(一)
关键字: Bootsrap,Catalina,Server,Service,Engine,Host,Context,Wrapper,Valve,Pipeline,ContextConfig,Servl ...
- 一秒搞定mysql的远程登录
执行下面命令! mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypw' WITH GRANT OPTION ; ...
- JAVA有哪些数据类型?基本数据类型各占多少个字节
java的数据类型分为:基本数据类型和引用数据类型. 基本数据类型各占多少个字节: 数据类型 字节 默认值 byte 1 0 short 2 0 int 4 0 long 8 0 float 4 0. ...
- MySQL 基础命令
的说法啊打发 第1章 SQL语句 mysql版本:针对mysql-5.6.36 版本 (5.7会有一些变动) 1.1 常用命令 # 查看数据库 mysql> show databases; sh ...