linux字符链接
硬链接
创建硬链接命令:ln filename hardlk_filename
文件系统中的每一文件默认具有一个硬链接。为节省空间,可以不复制文件,而创建引用同一文件的新硬链接。硬链接是新的目录条目,其引用系统中的现有文件。
硬链接是新的目录条目,其引用系统中的现有文件。
特点:
- 硬链接有相同的 inode 及 data block;
- 只能对已存在的文件进行创建;
- 不能对交叉文件系统进行硬链接的创建;
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
作用:
- 备份
限制:
- 目录无法基于目录创建链接
软链接
创建软链接命令:ln -s filename softlk_filename
软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软链接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块
特点:
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接或悬挂的软链接,类似于Windows源文件删除,快捷方式无法打开
作用:
- 快捷方式
inode
在Linux中一切皆文件,每个文件都有inode号,可以通过stat filename
获取文件的inode
信息
{17:19}~ ➭ stat 1.c
File: 1.c
Size: 686 Blocks: 8 IO Block: 4096 regular file
Device: 805h/2053d Inode: 1181522 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ huizhe) Gid: ( 1000/ huizhe)
Access: 2022-08-10 17:05:49.253266221 +0800
Modify: 2022-08-10 17:05:49.253266221 +0800
Change: 2022-08-10 17:05:49.253266221 +0800
Birth: -
或者ls -i
查看inode
号
{17:22}~ ➭ ls -i 1.c
1181522 1.c
linux打开一个文件可以分为几个步骤
1.系统找到这个文件名对应的inode号码;
2.通过inode号码,获取inode信息;
3.根据inode信息,找到文件数据所在的block,并读出数据。
其实系统还要根据inode信息,看用户是否具有访问的权限,有就指向对应的数据block,没有就返回权限拒绝。