有点标题党了,其实主要是想讲讲Linux文件存储的原理,也就是inode,以及硬链接和软链接的区别。
话说有一个场景,数据文件存储在一个个分级的目录下,简单的描述一下,类似以下的结构:
- 目录1
- 文件1.1
- 文件1.2
- 文件1.3
- 目录2
- 文件2.1
- 文件2.2
- 目录3
- 文件3.1
- 文件3.2
- 目录n
- 文件n.1
- 文件n.2
我们现在想把文件1.2、文件2.1、文件3.1、文件……、文件n.1发送给其他人。最简单的方法是,将我们需要的文件都复制到同一个目录下,打包,下载到本地,或者直接复制到其他服务器上。
现在的问题是,这些数据文件很大,每个文件动辄好几g,如果每个文件都复制一份,会耗时耗空间。
大佬过来看一眼,说:你创建这些文件的硬链接到你的指定目录,不就行了?不占空间。
我说:啥?啥是硬链接?
1、文件是怎么存储的?谈谈inode和数据块
讲硬链接之前,我们需要先了解一下前置知识:Linux是怎么存储文件的。
文件自然是保存在磁盘上的,但是是以什么样的形式、什么样的结构存储的呢?
操作系统一般会将磁盘分为一个个的块(block)来读取,而这个块,就是