title | date | tags | categories |
---|---|---|---|
Linux的软硬链接 |
2019-05-08 15:16:39 -0700 |
Linux |
Linux |
在linux系统中有种文件是链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)
用法: ln [源文件] [目标文件]
英文原意:link
- 拥有相同的
i
节点和存储block
块,可以看做是同一个文件 - 可通过
i
节点识别 - 不能跨分区
- 不能针对目录使用
一个分区要想使用,要把它分成等大小的block
数据块,在分区之前会有分区表,给每个文件建一行相关数据,保存了i
节点号,修改的时间以及存储的位置
如图:比如一个用户想要知道A
文件,他不是直接到硬盘中去取数据,而是会先去搜索分区表,然后确定到i
节点号,来确定文件的这一行数据,然后根据存储位置来读取到硬盘中的数据
假设我给A
文件创建了一个硬链接B
,B
和A
有相同的i
节点号,那么他们的内容也肯定是相同的,也就是说他们两个就是一模一样的文件,只不过名字不一样
我们不建议使用硬链接,首先是很难区分,其次限制较多,很容易产生错误
用法: ln -s [源文件] [目标文件]
- 类似
Windows
快捷方式 - 软链接拥有自己的
i
节点和Block块
,但是数据块中只保存原文件的文件名和i
节点号,并没有实际的文件数据 - 软链接文件权限都为rwxrwxrwx
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用
同样的我们为A
创建一个软链接B
,这时候B
是有自己的i
节点号,时间,存储的位置的,当然也有对应的数据块,但是这个数据块里面保存的是A
的i
节点号,时间,存储位置,所以在通过这个来读取原始数据,所以和这个原理和Windows
快捷方式的原理一模一样,比如我们创建了桌面的某个文件的快捷方式,通过这个快捷方式找到原文件在执行。如果我们修改A
,软链接就会找不到B
所指的A
的i
节点,就不能使用了