前言
写这篇文章的原因
1.最近在做一些工程化相关的内容,有使用到 fs.symlink(target,path)
, 查看 Node.js
文档发现讲的就那么回事吧!所以这里详细整理下,并且记得之前在 Linux
下直接使用命令创建软链通过 ls -s source_file target_file
在想这两个参数位置有些怎么不一致呢?
2.本文是我上一篇完整工程化系列文章中的一个小插曲,上篇文章 有提到软链接,那篇没有对软硬链接没有进行详细讲解,只是简单介绍了 fs.symlink
中软链接创建的基本使用,本文进行详细展开下。
3.软连接的创建应用场景还是比较广泛,比如 npm link
调试, leran
内部模块互相引用等等。
inode
在讲解软/硬链接之前,先了解一个 linux
系统中重要的概念 inode
。众所周知,文件存储在硬盘上,硬盘的最小存储单位叫做 “扇区”( Sector
,每个扇区存储 512
字节).操作系统读取硬盘的时候,不会一个个扇区地读取,因为这样效率太低,而是一次性连续读取多个扇区,这种一次性读取的连续多个扇区就是"块"( block
)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是 4KB
,即连续八个 sector
组成一个 block
。
文件数据都储存在 "块"
中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做 inode
,中文译名为 "索引节点"
。
注意: 我们打开一个一个文件时,系统首先找到文件名对应的
inode
号码,然后通过inode
号码获取inode
信息,然后根据inode
信息中的文件数据所在block
读出数据。
上述概念的文章内容比较多,不太容易记忆,看图!
![](https://i-blog.csdnimg.cn/blog_migrate/15c89d99e0760a7b1ab996651567c5ee.png)
inode 中包括了哪些内容 ?
inode包含文件的元信息,具体来说有以下内容:
1.文件的字节数
2.文件拥有者的User ID
3.文件的 Group ID
4.文件的读、写、执行权限
5.文件的时间戳,共有三个:ctime
指 inode
上一次变动的时间,mtime
指文件内容上一次变动的时间,atime
指文件上一次打开的时间。
6.链接数,即有多少文件名指向这个 inode
7.文件数据 block
的位置
linux 命令如何获取一个文件的 inode 信息
可以直接使用 linux
命令 <