硬连接和软连接,第一感觉就像是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. python socket 学习

    Python在网络通讯方面功能强大,今天学习一下Socket通讯的基本方式,分别是UDP通讯和TCP通讯. UDP通讯 upd 服务端 #!/usr/bin/env python # -*- codi ...

  2. SQL Server的日期和时间类型

    Sql Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1,秒的精度是指使用多少位小数表示秒 DateTime数据类型秒的精度是3,D ...

  3. SQL Server 2012 T-SQL 新特性

    序列 Sequence SQL Server 现在将序列当成一个对象来实现,创建一个序列的例子语法如下: CREATE SEQUENCE DemoSequence START WITH 1 INCRE ...

  4. 【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&解决方法

    正在写一个手指画图的程序C# + WPF其中有一部分是加载外部某PNG文件,放入BitmapImage,再作为Image的Source显示在Canvas上画了几笔之后,再存回这个PNG文件 ===== ...

  5. java中异常注意问题(发生在多态是的异常问题)

    /* 异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类. 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集. 简单说:子类 ...

  6. Android横竖屏切换及其对应布局加载问题

    第一,横竖屏切换连带横竖屏布局问题: 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局. 可以通过以下两种方法来切换布局: 1)在res目录下建立layout-land ...

  7. web前端学习笔记(CSS盒子的定位)

    相对定位 使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离.相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它.      使用relat ...

  8. struct

    struct QSortStack { public int high; public int low; } QSortStack* stack = ]; unsafe static void qso ...

  9. 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  10. js 比较好的博客

    1.0 作者:cloudgamer http://www.cnblogs.com/cloudgamer/archive/2010/04/01/ImageZoom.html