*inode*

当我们需要打开一个文件的时候,往往是输入打开文件的命令加上文件名,这时操作系统就会去硬盘上查找对应的文件,这里应该知道,Unix/Linux系统内部并不使用文件名来查找相应的文件,而是通过一个叫“文件索引节点”的inode来进行查找,而这个inode用来存放文件的元信息,比如文件的创建者、文件的size和文件的时间信息等等,而每一个文件也相应的对应一个inode。

*inode内容*

一个文件的inode往往包含以下信息

  1. 文件名和文件大小

  2. 文件链接数

  3. 文件的所属者Uid,文件的所属组Gid

  4. 文件的读写权限

  5. 文件的时间戳(Access:文件上一次打开的时间

    Modify:文件内容上一次变动的时间

    Change:inode上一次变动的时间)

  6. 文件数据Block的位置

可以用stat命令查看文件的inode信息

也可以用ls -i 文件名 来查看文件的inode号

表面上我们通过文件名来打开一个文件,实际上这里操作系统将经历如下步骤,首先找到文件名对应的inode号,其次通过inode号码获取相应的inode信息,最后根据inode信息找到文件数据的存储位置,读取相应的文件数据。

*硬链接*

在说文件的硬链接之前我想先提一下在C++中的深浅拷贝问题,浅拷贝就是多个指针指向同一块new出来的空间,在delete的时候就会有问题,所以我们一般用深拷贝,深拷贝中有写时拷贝也有用引用计数,其中引用计数就是用一个计数器来统计有多少个指针指向同一块空间,当计数器归零时才释放这块空间,否则多个指针共用一块空间,空间并不释放。

文件的硬链接其实就是引用计数的思想,Unix/Linux系统中允许多个文件对应同一个inode号码,也就是可以用不同的文件名访问同一个文件,也可以进行修改,但会影响所有硬链接文件,删除一个文件,并不影响其他文件的访问,这就是硬链接(hard link)。

可用ln 源文件 目标文件 这条命令来创建硬链接,当创建完成,文件的inode信息中,文件的链接数会+1,如下图:

而当删除一个硬链接文件时,文件inode信息中文件的链接数就会-1,而当文件的链接数减到0时,系统就会回收这个inode号码以及block区域供下一个新创建的文件使用:

*软链接*

举个栗子,有文件A和文件B,其inode号码并不相同,但文件A中的内容是文件B的路径,因此访问文件A时其实就是访问的文件B,此时文件A就叫文件B的软链接(soft link)或符号链接(symbolic link)。

可以用ln -s 源文件 目标文件 命令来创建文件的软链接,软链接中文件inode信息中文件的链接数并不会发生变化:

软链接中文件A依赖文件B而存在,当删除了文件B,打开文件A时系统就会报错:

《完》

转载于:https://blog.51cto.com/2627lounuo/1761261

inode及硬链接和软链接相关推荐

  1. linux文件存储、inode、硬链接、软链接

    目录 介绍 inode的内容 inode的大小 inode号码 目录文件 硬链接 软链接 介绍 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512 ...

  2. 认识Linux系统中的inode,硬链接和软链接

    在学习和创建软链接遇到了一点问题,总结一下: 在当前文件夹下面建立了两个临时文件夹tempdir1和tempdir2,然后在tempdir2里面创建了一个hello文件,然后用指令ln -s temp ...

  3. 硬链接、软链接和inode

    一.inode 在Linux中,"一切皆文件". 唯一标识文件的是inode而非文件名,文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 寻找正确的文件数据块. 什么 ...

  4. linux 的文件软链接隐藏,Linux inode及硬链接软链接详解

    Linux inode及硬链接软链接详解 York • 2020 年 09 月 28 日 Loading... 操作系统的文件数据除了实际内容之外,通常含有非常多的属性,例如 `Linux`操作系统的 ...

  5. linux硬链接与软链接

    详细文章链接:https://www.cnblogs.com/crazylqy/p/5821105.html (上面这个也是转载的!) 区别: 1.硬链接原文件/链接文件公用一个inode号,说明他们 ...

  6. php 删除硬链接,RHCE系列之文件管理----硬链接和软链接

    Linux 文件系统最重要的特点之一是它的文件链接. 链接是对文件的引用,这样你可以让文件在文件系统中多处被看到. 在 Linux 中,链接可以如同原始文件一样来对待.链接可以与普通的文件一样被执行. ...

  7. 实例讲解Linux系统中硬链接与软链接的创建

    导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说 ...

  8. Linux 硬链接和软链接的区别

    硬链接和软链接的区别 Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user ...

  9. 理解 Linux 的硬链接与软链接

    Linux 的文件与目录 现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用.在 UNIX 系统中,操作系统为磁盘上的文本与图像.鼠标与键盘 ...

最新文章

  1. 学习java三个技巧要知道!
  2. 怎么看rabbitmq的浏览器信息_买房沙盘怎么看?沙盘也可以看出很多信息的
  3. MyEclipse之安装SVN1.10.7
  4. 大数据学习路线copy自淘宝
  5. 因MemoryCache闹了个笑话
  6. 小型Hadoop集群的Ganglia配置和一些故障排除
  7. (软件工程复习核心重点)第八章面向对象方法学习题
  8. GitHub 被指审查内容,著名“换脸”开源项目 deepfake 遭限制访问
  9. 小白学 Python 爬虫(18):Requests 进阶操作
  10. Windows Knowledge
  11. pythonunicode编码_python unicode 编码整理
  12. Unity 2D人物移动实现
  13. 萝卜怎么吃最治病:白菜萝卜汤养胃暖身
  14. C++ STL笔记二:string容器;string构造函数;string赋值函数;string拼接;string查找、替换;string比较;string单个字符存取;string插入、删除、截取
  15. 调焦距离S远近与景深之关系
  16. 被“忽略”的云巨头:天翼云营收三位增长从何而来? | 看财报
  17. 如何将ubuntu配置为路由器
  18. 手机维修基础 常见故障分析㈢
  19. DW字库生成以及ts3使用
  20. ndraw-神经网络可视化工具,可实现Python画网络图与流程图

热门文章

  1. datatables 树形表格 java数据组装_实学:Java开发自己的博客系统-第三十篇(后台添加栏目功能-4)...
  2. markdown 图片居中_写作者必备技能:markdown 微信使用markdown
  3. python还是java好找工作_你觉得学 Python 还是 Java 更好找工作?
  4. 精通lambda表达式:java多核编程_Java8 Lambda表达式和流操作如何让你的代码变慢5倍...
  5. jq 点击事件 调用
  6. hive的inputStream
  7. 物联网核心安全系列——物联网安全需求
  8. 女人让男人感到自卑的九个经典(摘于网络)
  9. vmware下安装rhel5
  10. 从零学ELK系列(七):Centos安装Filebeat(超详细图文教程)