硬连接和软连接,第一感觉就像是window的快捷方式,实则不然

要说硬连接和软连接,那就必须了解inode和block以及分区了

EXT文件系统在创建分区的时候,就划分了两块区域,inode table和date block

INODE

inode – index node ,索引节点 每一个inode固定分配了128bytes的空间 一个文件和目录对应着一个inode 多个文件可以对应一个inode

当访问一个文件的时候,发生了什么

首先会找到这个文件名对应的inode number,然后拿着inode number 找到inode,获取inode中的信息,inode中记录了文件的数据在哪些个block中储存,然后会根据着inode中的block顺序,依次取出数据

INODE的内容

用sata命令取出文件名对应的inode信息
  • size :该文件的大小
  • block : block的信息
  • links :有多少个连接数,有多少个文件名连接上这个inode
  • inode: inode number
  • Access:mode 权限
  • uid、gid
  • atime、mtime、ctime

删除

删除一个文件的时候发生了什么? 当这个文件的links>1的时候,先links-1,不删除block中的数据,不删除inode 如果links=1,那就删除inode,而且删除block,这样的话,那文件真的是删除了 删除目录的软连接,对实际目录没有影响,删除实际目录那就是真的删除了

硬连接

ln source destination 用上面的指令可以新建一个硬连接

建一个硬连接发生了什么?

先新建一个文件名,文件名的inode number 指向源文件的inode number,然后把links+1,这就完成啦 所以硬连接文件的所有信息(权限、owner、size、time….)都和源文件一模一样

访问硬连接的过程

找出硬连接的inode number,然后读取这个inode的信息和bolck位置,接着读取block中的数据

注意

  • 源文件和硬连接文件共用一个inode
  • 建立硬连接,inode中的links会加一
  • 所以删除硬连接对源文件不会有影响

软连接

ln -s source destination 用上面的指令可以建立一个软连接

建一个软连接发生了什么?

先建立一个文件,这个过程就会新建一个inode,软连接的inode和源文件的inode不一样 然后这个软连接文件的文件名会指向源文件 可以看到,软连接的inode和源文件的inode不一样 软连接文件的大小为4bytes,这刚好就是源文件文件名(demo)的大小,一个字幕一个byte

访问一个软连接

访问一个软连接文件的时候,会根据文件名找到源文件,然后就跟直接访问源文件一样了

注意

  • 软连接的inode和源文件的inode不一样
  • 软连接不会增加links,所以删除源文件(links=2)的时候,软连接就访问不了了
  • 软连接文件的size=源文件的文件名的size

硬连接与软连接,inode与links的更多相关文章

  1. 初窥Linux 之 区分硬连接和软连接

    一.Linux下的两种连接文件及创建方式 在Linux下面的连接文件有两种——软连接和硬连接,虽然都是连接文件,但两者却有很大的区别.一种是类似于Windows的快捷方式功能的文件(或目录),这种连接 ...

  2. Linux文件系统的硬连接和软连接

    title: Linux文件系统的硬连接和软连接 date: 2018-02-06T20:26:25+08:00 tags: ["文件系统"] categories: [" ...

  3. linux中的硬连接和软连接

    linux中的硬连接和软连接 linux中的硬连接和软连接 背景 连接 硬连接 软连接 example reference 背景 linux中的文件主要分3块, - 真正的数据 - 索引节点号(ino ...

  4. 【Linux】Shell学习笔记之四——文件和目录管理(硬连接和软连接)

    在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...

  5. linux ------ 硬连接和软连接(软连接也叫符号连接)

    在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号 (Inode Index).在Linux中,多个文件名指向同一索引节点是存在的.一般这种连接就是硬连接 ...

  6. linux 硬连接与软连接

    1.linux中文件占用一个inode,inode指向文件内容.2.文件名可以认为是一个指针,指向inode.硬连接相当于指针的整体拷贝,并不是对文件内容的拷贝.两个文件名(两个指针)都能修改文件,删 ...

  7. Linux学习笔记之1——文件和目录管理(硬连接和软连接)(连结档,相当于快捷方式)

    在这节将要学习linux的连接档,在之前用"ls -l" 查看文件属性的命令时, 其中第二个属性是连接数.那么这个连接数是干什么的?这就要理解inode. 先说一下文件是怎么存储的 ...

  8. 智能车学习(二十)——浅谈C车硬连接与软连接

    一.为何要追求软连接?       车子进行软连接之后,可以达到一种效果,就是在高速过程中,车子如果快要发生侧翻的时候,只会跳一个后轮,且只是轻微,而前轮如果进行的内倾,就可以让前轮最大面积接触,增大 ...

  9. Linux 硬连接和软连接的原理 (in使用)

    引子 目前,UNIX的文件系统有很多种实现,例如UFS(基于BSD的UNIX文件系统).ext3.ext4.ZFS和Reiserfs等等. 不论哪一种文件系统,总是需要存储数据.硬盘的最小存储单位是扇 ...

随机推荐

  1. [html]三列居中自动伸缩的结构

    html三列居中自动伸缩的结构 <div style="width:100%;height:80px;border:1px solid #DDD;margin-bottom:10px; ...

  2. Python中的字符串与字符编码

    本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章. ...

  3. poj 2528 Mayor's posters(线段树+离散化)

    /* poj 2528 Mayor's posters 线段树 + 离散化 离散化的理解: 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用线段树求解的话,很明显 ...

  4. Docker 有什么优势?

    1.什么是容器? 依托与linux 内核功能的虚拟化技术 2. docker 是什么? 能够把应用程序自动部署到容器的开源引擎 3. docker 跟原有的工具有何区别? 传统的部署模式是:安装(包管 ...

  5. 【Java基础】方法

    Num1:检查参数的有效性 绝大多数的方法和构造器对于传递给它们的参数值都会有某些限制.比如:索引值必须是非负数,对象引用不能为null等等.这些都很常见,你应该在文档中清楚地指明所有这些限制,并在方 ...

  6. 原生JS编写的照片墙效果实例演示特效

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 微信js SDK接口

    微信JS-SDK说明文档 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 一.微信登录功能 在进行微信OAut ...

  8. 材价看板(1)- 如何建立你的第一个kanban,看看这些暴露的问题你们有没有?

    今年负责一个老产品新团队,和几年前的指标组一样,现在的团队没有采用什么研发方法,于是我开始了团队的看板之旅. 12月22日给材价整个部门的产品研发相关人员做了一次kanban工作坊培训,    以及敏 ...

  9. [New Portal]Windows Azure Virtual Machine (17) Virtual Machine成本分析

    <Windows Azure Platform 系列文章目录> 在Windows Azure VM里,计费模式是和以下几个因素有关: 成本1: VM Type and VM Size 具体 ...

  10. .net using使用小结

    在.net中using使用方法有3种,分别是using指令.using定义使用范围.using别名. using指令,即引用命名空间. using System; using System.Colle ...