欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

硬连接与软连接,inode与links 博客分类: linux linuxinodelinksln连接 

程序员文章站 2024-03-23 19:26:16
...

 

硬连接和软连接,第一感觉就像是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与links
            
    
    博客分类: linux linuxinodelinksln连接 

  • 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与links
            
    
    博客分类: linux linuxinodelinksln连接 

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

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

访问一个软连接

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

注意

  • 软连接的inode和源文件的inode不一样
  • 软连接不会增加links,所以删除源文件(links=2)的时候,软连接就访问不了了
  • 软连接文件的size=源文件的文件名的size
原文地址http://www.wewill.top/2016/06/03/%E7%A1%AC%E8%BF%9E%E6%8E%A5%E4%B8%8E%E8%BD%AF%E8%BF%9E%E6%8E%A5inode%E4%B8%8Elinks/