前言
首先我们先来复习以下Linux的文件系统
Linux的文件系统是EXT4
以EXT4文件系统格式化磁盘时,将磁盘分成了三个区,分别是:
1、superblock:
记录文件系统的整体信息,包括inode和block的总量,使用量、剩余量。
2、inode:
很多节点,给每一个inode都分配一个编码,一个文件会有一个inode节点,在此inode中存储文件的属性信息以及存储文件内容的那些block号
3、block:
很多block,给每一个block都分配了一个编号,每个block用于存储文件的真实内容每一个block一般是4k的大小。’
为了解决文件的共享问题,Linux引入了软连接和硬连接,除了为Linux解决文件共享使用
,还带来了隐藏文件路径,增加权限安全以及节省存储等好处
。
若一个inode结点对应多个文件名,则为硬连接,基本原理如下:
硬连接
原文件和硬链接文件的i节点号是相同的(ls -i
),1个文件名对应一个i节点,1个i节点可以通过多个文件名访问,所以,他们的属性完全相同,并且修改了其中一个的内容另一个也会跟着修改
命令:
ln 原文件 目标文件
特征:
- 原文件和连接文件的属性完全一样
- 连接文件和原文件的关系类似于:复制+同步更新
- 当原文件丢失,硬连接文件还可以访问
- 不能跨分区,不能针对目录使用
若一个文件用户数据块中存放的是另一个文件的路径名指向,则该文件就是软连接
软连接
命令:
ln -s 原文件 目标文件
特征:
- 相当于windows的快捷方式
- 只是一个符号连接,所以软连接文件大小都很小
- 当运行软连接的时候,会根据连接指向找到真正的文件,然后执行
- 所有软连接文件的权限是777,而真正的权限是由指向的那个文件决定的
- 原文件丢失,软连接无法访问,会报找不到的错误
- ls -al以后,软连接后面箭头指向的是原文件