一.inode

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

什么是数据块呢?文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。文件数据都储存在"块"中。

每一个文件都有对应的inode,里面包含了与该文件有关的一些信息,比如文件的创建者、文件的创建日期、文件的大小等等。

可以用stat命令,查看某个文件的inode信息:stat example.txt

二.硬链接与软链接

使用命令 mv 移动并重命名文件不影响文件的用户数据及 inode 号。

为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

1.硬链接

若一个 inode 对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名。硬链接可由命令 ln 创建。

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件。

2.软连接

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。因此软链接的创建与使用没有类似硬链接的诸多限制:

  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

学习资料:

1.Linux inode学习

2.理解inode

3.理解Linux的硬链接与软连接

最新文章

  1. DevExpress VCL v16.1.3发布
  2. python:HTML + CSS 优先级 返回顶部
  3. ubuntu14.10建立热点wifi分享给手机
  4. bitmap格式分析
  5. UI学习笔记---第四天
  6. 找到一个学习bootstrap的好网站
  7. ASA与PIX的区别
  8. 【转】让itunes下载加速的真正办法,转向至香港台湾澳门苹果服务器 -- 不错不错!!!
  9. BZOJ 2599 Race(树分治)
  10. Hadoop学习之HBase
  11. Java语言定义的线程状态分析
  12. spring注解一次 清除多个缓存
  13. Flume环境搭建_五种案例
  14. token简单的使用
  15. 2018-03-11 20165235祁瑛《Java程序设计》第二周学习总结
  16. Macro-Micro Adversarial Network for Human Parsing
  17. BZOJ2303 [Apio2011]方格染色 并查集
  18. python 图片上添加文字
  19. 通过调整浏览器UA设置欺骗限制上网
  20. 将Android Studio默认布局ConstraintLayout切换成LinearLayout

热门文章

  1. Python井字游戏
  2. 【Java编程】写入、读取、遍历Properties文件
  3. python删除所有的中文字符、非ASCII或非英文字符,检查字符串是否包含非ASCII
  4. CoreThink开发(十一)首页控制器判断移动设备还是PC并做相应处理
  5. Canvas:橡皮筋线条绘制
  6. Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) B - Code obfuscation
  7. pc端html页面到移动端等比缩放
  8. 项目中使用better-scroll实现移动端滚动,报错:Cannot read property 'children' of undefined better-scroll
  9. MySQL性能优化之max_connections参数
  10. 使用buildroot创建自己的交叉编译工具链【转】