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. Find the Maximum sum

    Given an array of n elements.Find the maximum sum when the array elements will be arranged in such w ...

  2. lesson - 9 课程笔记

    一. yum          作用:                     yum 命令是在Fedora 和RedHat 以及SUSE 中基于rpm 的软件包管理器,它可以使系统管理人员交互和自动 ...

  3. du 命令详解

    du : show disk usage  作用:统计目录或文件所占用磁盘空间的大小. 语法:du 参数 选项 参数: -a 为每个制定文件显示磁盘使用情况, 或者为目录中每个文件显示各自磁盘使用情况 ...

  4. 快速恢复开发环境(系统还原后的思考,附上eclipse注释的xml配置文件)

    1.Eclipse/Myeclipse的工作空间,不能放在系统盘 除非你的项目都有实时的云同步或SVN等,才能放在系统固态盘,不然你享受快速启动项目的同时,也需要承担系统奔溃后找不回项目的风险: 公司 ...

  5. A session had already been started – ignoring session_start() 怎么办?

    php警告提示A session had already been started – ignoring session_start() 解决方案 访问log日志发现有个这样的警告 主要是在TP框架中 ...

  6. 【python3之变量,输入输出,判断,循环】

    一.python的基础语法和规则 1.变量 ①.变量的命名规则 语法: (下划线或字母)+(任意数目的字母.数字或下划线) 变量名必须以下划线或字母开头,而后面接任意数目的字母.数字或下划线.下划线分 ...

  7. 对RC4算法进行改写,新的加密算法RCX。

    最近研究JWT算法, JWT由header.payload.signature三个部分组成,payload是非加密的,一些敏感信息能被别人非法获得,必要时候要加密. 加密算法中,RC4算法的速度可以达 ...

  8. 小白的Python之路 day5 shutil模块

    shutil模块 一.主要用途 高级的文件.文件夹.压缩包 等处理模块 二.常用方法详解 1.shutil.copyfileobj(fsrc, fdst) 功能:把一个文件的内容拷贝到另外一个文件中, ...

  9. 转自 BotVS 量化平台社区 --- 如何从绩效报告中分辨出“好模型 or 坏模型”

    ## NO:01 在投资行业一直有一个说法,靠交易盈利是所有赚钱方式中最难的一种,以至于有人戏谑称交易为投资领域的搬砖工作. 为了提升交易效率.挖掘潜在投资机会,量化交易伴随着信息技术的发展大行其道, ...

  10. (7拾遗)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练

    从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...