参考王道考研操作系统
文章目录
操作系统/Linux - 文件 - 软链接/符号链接和硬链接(文件共享)
文件共享 - 软链接和硬链接
文件共享
- 硬链接 - 基于索引结点的共享方式
- 软链接 - 基于符号链的共享方式
软链接(符号链接)
类似于Windows的快捷方式,但又不完全一样
Linux 创建软链接
ln -s 原文件名 软链接文件名
-
创建一个软链接
testfile.soft
指向testfile
-
使用
ls -l
命令看到文件名为蓝色且有箭头指向的就是软链接 -
任何用户创建的软链接默认都是所有人拥有所有权限
lrwxrwxrwx
,文件类型是l
(link)
特点
Windows图示仅作为参考理解
查找方式:软链接 -> 被链接文件 -> 索引结点
-
被链接文件可以是目录文件,也可以是普通文件
-
包含被链接文件的路径名
-
被链接文件被删除后,会出现访问失败,于是将软链接删除,此时不会产生任何影响
注:
- 该方式需要根据文件路径名逐个地查找目录,直至找到该文件的索引结点,导致访问文件的开销变大并增加了启动磁盘的频率
- 符号链的索引结点也要耗费一定的磁盘空间
- 建立符号链接时,文件的引用计数值直接复制,文件删除时,符号链接的引用计数值不变
- 软链接文件占用一定的少量存储空间
硬链接(索引结点)
特点
查找方式:硬链接 -> 索引结点 -> 文件内容
- 文件目录中只设置文件名及指向相应索引结点的指针
- 索引结点中存放文件的物理地址及其他的文件属性等信息
- count - 链接计数
- count = 2时表示有两个用户目录项链接到本文件上
- 删除时,只是将count - 1,并删除自己目录中相应的目录项(硬链接),而不是直接删除文件内容
- count = 0,表示没有用户使用该文件,系统负责删除该文件
Linux 创建硬链接
ln 原文件名 硬链接文件名
-
创建
testfile
的硬链接testfile.hard
-
被标记为蓝色背景
-
i结点相同(故删除原文件不会导致硬链接失效,而且原文件和硬链接文件可以同步更新)
-
与原文件权限相同
注:
- Linux中,硬链接不能跨分区创建(比如
/
与/boot
)- 硬链接文件只占用目录项存储空间大小(具体看情况)
硬链接ln
与复制cp
的区别
-
复制一份
testfile
为testfile.bak
-
ls -li
命令查看详细信息和i结点 -
发现硬链接与原文件的i结点相同,而文件备份与原文件的i结点不同
结论:文件复制生成了另一个全新的文件,另一个的索引结点,占用另一份存储空间