zoukankan      html  css  js  c++  java
  • 硬连接与软连接,inode与links

    硬连接和软连接,第一感觉就像是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信息

    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不一样

    然后这个软连接文件的文件名会指向源文件

    ln-s

    可以看到,软连接的inode和源文件的inode不一样

    软连接文件的大小为4bytes,这刚好就是源文件文件名(demo)的大小,一个字幕一个byte

    访问一个软连接

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

    注意

    • 软连接的inode和源文件的inode不一样
    • 软连接不会增加links,所以删除源文件(links=2)的时候,软连接就访问不了了
    • 软连接文件的size=源文件的文件名的size
  • 相关阅读:
    第二章 Java程序设计环境
    第一章 Java程序设计概述
    (五)Java工程化--Jenkins
    (二)Java工程化--Maven实践
    (四)Java工程化--Git基础
    (三)Java工程化--Git起步
    (一)Java工程化--Maven基础
    codeblocks 中文编码问题
    win10安装virtualbox发生严重错误
    利用ssh传输文件
  • 原文地址:https://www.cnblogs.com/wewill/p/5588730.html
Copyright © 2011-2022 走看看