• Linux:inode简介


    【传送门】:阮一峰的网络日志:理解inode

    1. 定义

      inode用于存储文件的元数据信息,每一个文件都有对应的inode,中文译名为"索引节点"。比如文件的创建者、文件的创建日期、文件的大小等等。

    2. inode的内容

      1. 文件的字节数

      2. 文件拥有者的User ID

      3. 文件的Group ID

      4. 文件的读、写、执行权限

      5. 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。

      6. 链接数,即有多少文件名指向这个inode

      7. 文件数据block的位置

    3. inode的号码

      每个inode都有一个号码,OS通过这个号码识别不同的文件,文件名只是inode号码一个便于识别的别名;

      操作系统自动将硬盘分为两部分,一部分是数据区,存储用户文件的内容数据,一部分是inode区,存储文件的元数据信息;

      打开一个文件时,先找到文件名对应的inode号码,通过inode号码获取inode信息,最后通过inode信息找到文件数据所在的block,读取数据;

      ls -i  filename  可查看文件的inode号码

    4. 目录文件

      Unix/Linux系统中,目录(directory)也是一种文件。打开目录,实际上就是打开目录文件。

      目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

      ls  -i  dir  可以显示目录下每个文件的inode号码;

    4.1 目录的权限

      目录文件的读权限(r)和写权限(w),都是针对目录文件本身。由于目录文件内只有文件名和inode号码,所以如果只有读权限,只能获取文件名,无法获取其他信息,因为其他信息都储存在inode节点中,而读取inode节点内的信息需要目录文件的执行权限(x)。

    5. 硬链接

      一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。

      这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hard link)

      ln  源文件    硬链接,为源文件创建硬链接

    6. 软连接

      文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。因此,无论打开哪一个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软链接"(soft link)或者"符号链接(symbolic link)。

      这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:"No such file or directory"。这是软链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"链接数"不会因此发生变化。

      ln  -s   源文件或目录  软链接 ,软链接必须依赖源文件或者目录才能使用;

  • 相关阅读:
    安卓学习第一课——电话拨号器
    CodeForces 644B【模拟】
    hdu5861【线段树】
    CodeForces 41A+43A【课上无聊刷水题系列】
    hdoj5493【树状数组+二分】
    HDU5894【组合数学】
    Codeforces643A【一种暴力】
    CodeForces 689C【二分】
    CodeForces 665B 【水-暴力】
    CodeForces 653A【水】
  • 原文地址:https://www.cnblogs.com/virgosnail/p/12482874.html
Copyright © 2020-2023  润新知