当前课程知识点:Linux系统管理 >  管好文件 >  文件链接 >  Video

返回《Linux系统管理》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《Linux系统管理》慕课在线视频列表

Video课程教案、知识点、字幕

各位同学

大家好

在本讲中

我们将要学习如何在Linux中

为文件创建硬链接和符号链接

并探讨两者之间的相同和不同之处

我们首先来了解一下符号链接文件

符号链接文件很容易理解

因为它与Windows里面的“快捷方式”

这个东西很像 Windows桌面上

放的那些带箭头图标

都是快捷方式文件

这些文件一般都很小

仅仅提供了指向另外实际文件的一个通道

Linux里面的符号链接也一样

创建符号链接命令很简单

使用 ln 命令 也即“link”的缩写

并加上一个“-s”选项

表示创建的是符号(Symbolic)链接

ln 后可以跟两个参数

前一个参数是源文件

也即链接要指向的文件

后一个参数是要创建的链接文件名

接下来我们就来尝试创建一个符号链接

我们准备为/tmp目录下的hello.sh文件

创建一个名为hello_slink符号链接

好 链接创建完成

虽然我们可以通过符号链接文件

来读 写和执行源文件

但这完全不代表符号链接文件

和源文件是同一个文件

我们分别来列出

源文件hello.sh和符号链接文件hello_slink

我们观察到源文件

和其符号链接文件

完全是两个不同的文件

不仅名字不一样

文件的各个属性都不同

同时 我们还注意到

符号链接文件的名字非常特殊

名字中不仅有符号链接文件名

还有目标文件名

如果符号链接文件

所指向的源文件被删除了

那么这个符号链接文件就失效

读取或者执行这个符号链接文件

会显示“没有那个文件或目录”的提示

其名字也会变为醒目的红色

这种情况

我们就称这个符号链接“断裂”了

符号链接应用比较灵活

可以为任意文件创建符号链接

接下来我们再来了解下硬链接

虽然两者名字里都有“链接”

硬链接文件和符号链接文件

还是相当不一样的

说两者“不一样”

不仅因为两者表现出来的

特征有所不同

更重要的是两者的原理也大相径庭

要理解硬链接

我们得先了解若干基本概念

首先我们得搞明白

Linux的文件到底是如何存储的

在Linux中

当划分磁盘分区并格式化的时候

整个分区会被划分为两个部分

即inode区和data block区

Linux中的每个文件

都分成两部分存放

一部分是文件的唯一标识

inode-number以及属性信息

放inode区的一个inode中

inode-number和inode是一一对应的

另一部分是文件的实际数据

放置在data block区中

在Linux中我们需要通过

文件的inode来找到存放文件数据的data block

在一个硬盘分区中

不可能有两个文件的共用一个inode

自然也不可能有

两个文件的inode-number是一样的

如果我们将一个硬盘分区中的

所有文件比作一本书的话

inode区就是其目录

data block区就是其内容

我们必须的通过目录

才能够找到具体的内容

我们可以通过在 ls -l命令后

加上一个“-i“ 选项

列出文件的 inode-number来进行观察

第一个字段就是文件的 inode-number

至此我们初步弄明白了

Linux的文件到底是如何存储的

接下来我们还得弄明白另一个问题

Linux中的目录到底是怎样的文件

简单来说

Linux中的目录是一张表

每个表项都代表了一个文件

目录中有多少文件

这张表中就有多少表项

每个表项中都包括了两样数据

一是文件名

再就是该文件inode-number

因此 Linux中存取文件的过程就是

通过文件名找到对应inode-number

然后找到文件的inode

最后找到文件的数据

弄懂了这两个概念后

我们就可以解释硬链接这个东西了

硬链接其实很简单

就是在目录这张表中

让一个inode-number对应了多个文件名

文件inode和数据还是一份 没变

只不过文件多个一个名字

这个名字就被称为硬链接

创建硬链接同样使用ln命令

参数也一样

前一个参数是源文件

也即链接要指向的文件

后一个参数是要创建的链接文件名

只不过不需要加上 –s选项了

接下来我们就来为/tmp目录下的

sample.txt文件创建一个硬链接

sample_hl01 可以观察到在创建前后

文件属性的第二个字段发生了改变

由1变成了2

表示文件的硬链接数目增加了1

然后我们再为sample.txt创建一个

硬链接sample_hl02

此时文件的硬链接数目变成了3

但我们清楚

无论是sample.txt还是sample_hl01

还是sample_hl02

本质上是同一个文件

只不过这个文件有多个名字罢了

这一点我们可以通过列出

相关文件的 inode-number来进行观察验证

我们可以看到

这三个文件的inode-number是一样的

充分说明了这三个文件名本质上

就是同一文件

我们可以通过任意一个

硬链接文件来读 写 执行源文件

接下来 很自然

我们肯定会想

如果将源文件删除掉

创建的硬链接会不会

像符号链接一样“断裂”呢

我们来验证一下

首先将源文件sample.txt删除

我们发现此时两个硬链接文件

除了文件属性中的硬链接数目变成了2

仍然能够照常打开

文件属性和文件内容并无异常

我们再删除sample_hl02文件

余下的sample_hl01文件

除了文件属性中的硬链接数目

变成了1 其他一切仍然正常

这很容易理解

我们为sample.txt文件

创建了两个硬链接

sample_hl01和sample_hl02

那么就相当于这个文件

在文件系统中有了三个文件名

这三个文件名都指向同一份文件内容

有点类似于“狡兔三窟”的感觉

删除了一个文件

只是将某个文件名从文件系统中移除了

我们仍然可以通过余下的文件名

来访问这个文件的数据

事实上

只要文件还存在着一个文件名

这个文件就一切正常

仍然可以访问

除非将这三个文件都删除

我们才无法通过文件名找到

文件inode 进而访问文件数据

文件才算真正被删除掉

硬链接由于文件系统的限制

不如符号链接灵活

有两条特别需要提醒大家

一 是我们强烈不推荐为目录创建硬链接

容易造成目录遍历死循环

具体原因较为复杂

有兴趣的同学可以参见这个链接

二 是不能跨硬盘分区创建硬链接

原因很简单

就是在不同的分区中

文件的inode-number不再是唯一的了

具体详细解释可以参见这个链接

ok 关于文件链接我们就讲到这了

谢谢大家观看 下次见

Linux系统管理课程列表:

初识Linux

-Linux那些事儿

--Linux那些事儿

-选择合适的Linux版本

--微视频

-建立一台虚拟机

--微视频

-安装Linux系统

--微视频

-与Linux进行交互

--微视频

-用好帮助文档man

--Video

-关闭和重启Linux

--微视频

-初识Linux--初识Linux测试

管好文件

-切换创建和删除目录

--微视频

-列出文件和文件属性

--Video

-拷贝、剪切、删除和创建文件

--Video

-文件链接

--Video

-归档压缩文件

--Video

-查找文件

--Video

-通配符

--Video

-查看文本文件

--Video

-管好文件--用好文件测试01

-管好文件--用好文件测试02

用好重定向和管道

-重定向

--Video

-管道

--Video

-用好重定向和管道--用好重定向和管道测试

用好vi

-vi 入门

--Video

-vi 初探

--Video

-用好vi--用好vi测试

管好用户

-用户和用户组

--Video

-查看用户

--Video

-切换用户身份

--Video

-创建、修改和删除用户

--Video

-创建、修改和删除用户组

--Video

-部分让渡根用户权限

--Video

-用户管理配置文件

--Video

-管好用户--管好用户测试

管好硬盘

-查看硬盘

--Video

-分区和格式化硬盘

--Video

-手动挂载和卸载分区

--Video

-开机自动挂载分区

--Video

-管好硬盘--管好硬盘测试

管好网络

-查看和操纵网络接口

--Video

-配置TCP/IP网络参数

--Video

-管好网络--管好网络测试

管好软件包

-用RPM管理软件

--Video

-用yum管理软件

--Video

-为yum配置软件源

--Video

-管好软件包测试--作业

管好进程和服务

-查看进程

--Video

-操纵进程

--Video

-查看和操纵系统服务

--Video

-管好进程和服务--管好进程和服务测试

管好远程联机服务器

-用SSH协议远程联机

--Video

-为SSH服务器配置密钥认证登录

--Video

-管好远程联机服务器--管好远程联机服务器测试

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。