本文主要讲linux链接,inode是前提知识,虽不多,但很关键并容易理解
链接
理解inode是理解链接的前提
inode
linux的诞生是很早的,那时候硬盘大行其道,是最主要的存储介质。硬盘有扇区,磁道,柱面,盘面等一些物理特性。
本文用到一些术语,汉译多有歧义,建议用英文理解。
- sector 扇区
- block 块
sector是硬盘一次读取的最小单位。可以想象sector又是Byte的基本单位。
但,这对于硬盘来说,还是太小了,于是人为地让机器多读几个sector,就成了block。我们现在所经常提到的硬盘一次读写的512Byte,就是1 block。
linux怎么搞呢?
这里必须要说清楚一点儿事儿。linux一切皆文件。人家只是拿文件表示一切,又没真的说外设它就是文件。有的文件还不能用vim打开呢。这个文件我的理解就是为了方便描述而抽象的一种概念。就像c语言对int的抽象,使得申请一个变量的内存空间不必像汇编那样繁琐。
前面关于sector和block的辩证已经知晓,那么,8 block = 4 KB 。这个大小在linux中是一个很神奇的单位,就如同65535对于计算机网络来说是一个经常用到的量一样。
必备知识来了~
linux文件系统基本结构
inode + 文件本身(也就是文件的数据)。
linux在装系统时,忽略硬盘的物理细节,抽象为inode + 文件本身。
inode = 0.5 kB(512 Bytes)
文件的一片儿 = 4 KB
---
文件大于4KB?
文件 = 8KB。 inode + 文件片儿 + inode + 文件片儿
---
文件不够或刚好超过8KB?
文件不够8KB
inode + 文件片儿 + inode + 文件片儿
文件超过8KB
inode + 文件片儿 + inode + 文件片儿 + inode + 文件片儿
---
总结:没用到就浪费。反正4KB也不大
---
重点来了~
inode号是linux内部找寻文件的唯一凭证。文件名的话容易有特殊字符,文件的信息(属性)都存在inode那0.5KB之中,我们在shell中输入文件名,linux默认转化为inode号进行处理。一个文件可以有多个别名。
linux系统链接
硬链接
软链接
硬链接
文件inode区域,起一个alias(别名)。
文件inode号和source file相同。
软链接
文件data区,存放另一个文件地址。
即链接到的那个文件的路径是这个软链接文件的内容,点击这个文件就会执行,按照它里面的内容找到另一个文件并打开。
文件inode号和source file不同。
ln
创建硬链接
ln source-file linkFile
创建软链接
ln –s source-file linkFile