我是靠谱客的博主 老迟到橘子,最近开发中收集的这篇文章主要介绍在linux系统中 关于硬链接,Linux系统中的硬链接和软连接,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

## 链接的概念

[TOC]

在linux系统中,链接可以分为两种:

一种被称为硬链接(Hard Link);

另一种被称为软连接或者符号连接(Symbolic Link)。在默认不带参数情况下,执行ln命令创建的链接是硬链接。

### 硬链接

硬链接是指通过索引节点来进行链接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Inode Index)或Inode。

在Linux系统中,多个文件名指向同一索引节点(Inode)是正常且允许的。一般这种连接就称为硬链接。硬链接的左右之一是允许一个文件拥有多个有效的路径名,这样用户就可以就爱能力硬链接到重要的文件,以防止“误删”源数据,那么为什么给文件建立了硬链接就会防止数据误删除呢?

因为文件系统的原理是只要文件的索引节点(Inode Index)还有一个以上的链接(仅仅删除了该文件指向)只删除其中一个链接并不影响索引节点本身和其他的链接(即数据文件实体并未删除),只有当最后一个连接被删除后,此时如果有新数据要存储到硬盘时,被删除文件的数据块及目录的链接才会被释放,空间被新数据占用覆盖。此时,数据就再也无法找回了

也就是说,在linux中,删除文件的条件是与之相关的所有硬链接文件均被删除。

### 软连接

软连接又是也被称为符号连接(Symbolic Link)软连接文件就类似与Windows系统中的快捷方式,它实际上是一个特殊的文件,在软连接中,软连接文件实际上就是一个文本文件,这个文件中包含有软链接指向另一个文件的文职信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

## 实例

### 新增软、硬链接

~~~

[root@office6_5 /test/luo]

# touch luofile #创建luofile文件

[root@office6_5 /test/luo]

# ln luofile luofile_hard_link # 创建硬链接

[root@office6_5 /test/luo]

# ln -s luofile luofile_soft_link # 创建软连接

[root@office6_5 /test/luo]

# ls -li # 查看列表inode信息

总用量 0

24387 -rw-r--r-- 2 root root 0 10月 19 23:16 luofile

24387 -rw-r--r-- 2 root root 0 10月 19 23:16 luofile_hard_link ### 硬链接的inode信息和源文件一致

24388 lrwxrwxrwx 1 root root 7 10月 19 23:18 luofile_soft_link -> luofile

~~~

* * * * *

~~~

[root@office6_5 /test/luo]

# mkdir luodir

[root@office6_5 /test/luo]

# ln luodir luodir_hard_link

ln: "luodir": 不允许将硬链接指向目录

[root@office6_5 /test/luo]

# ln -s luodir luodir_soft_link

[root@office6_5 /test/luo]

# ls -lih

总用量 4.0K

24389 drwxr-xr-x 2 root root 4.0K 10月 19 23:21 luodir

24387 -rw-r--r-- 2 root root 0 10月 19 23:16 luofile

24387 -rw-r--r-- 2 root root 0 10月 19 23:16 luofile_hard_link

24388 lrwxrwxrwx 1 root root 7 10月 19 23:18 luofile_soft_link -> luofile

24390 lrwxrwxrwx 1 root root 6 10月 19 23:22 luodir_soft_link -> luodir

~~~

>[danger] `ln` 命令不能对目录创建硬链接,但可以对目录创建软连接,对于目录的软连接也是生产场景常用的功能。

### 删除软、硬链接

~~~

[root@office6_5 /test/luo]

# echo "this is a file" >> luofile # 给源文件中写入内容

[root@office6_5 /test/luo]

# cat luofile # 查看源文件内容

this is a file

[root@office6_5 /test/luo]

# cat luofile_hard_link # 查看硬链接内容

this is a file

[root@office6_5 /test/luo]

# cat luofile_soft_link # 查看软链接内容

this is a file

[root@office6_5 /test/luo]

# rm -f luofile # 删除源文件

[root@office6_5 /test/luo]

# ls -lrti

总用量 8

24388 lrwxrwxrwx 1 root root 7 10月 19 23:18 luofile_soft_link -> luofile # 软连接由于删除了源文件已经不存在报错了

24389 drwxr-xr-x 2 root root 4096 10月 19 23:21 luodir

24390 lrwxrwxrwx 1 root root 6 10月 19 23:22 luodir_soft_link -> luodir

24387 -rw-r--r-- 1 root root 15 10月 19 23:30 luofile_hard_link

[root@office6_5 /test/luo]

# cat luofile_hard_link # 硬链接还存在

this is a file

[root@office6_5 /test/luo]

# cat luofile_soft_link # 软连接已经不存在

cat: luofile_soft_link: 没有那个文件或目录

~~~

#### 软、硬链接总结

通过上面的测试可以看出:

1 当源文件的软连接和硬链接同时存在时,删除软连接对源文件和硬链接无影响;

2 当源文件的软连接和硬链接同时存在时,删除硬连接对源文件和硬链接无影响;

3 当源文件的软连接和硬链接同时存在时删除原始文件`luofile`后,硬链接`luofile_hard_link`不受影响,但软连接文件`luofile_soft_link`失效(红底,白色文字闪烁状)。

#### 关于目录的链接

1. 对于目录。不可以创建硬链接,但可以创建软连接

2. 对于目录的软链接是生产场景运维中常用的技巧。

### 软连接的使用案例

在编译apache软件时,编译路径呆着版本号`/usr/local/apache2.2.26`(为了区分版本号,因此路径比较长),而在访问目录时有希望简便,此时就可以通过建立一个简单的软链接路径文件 `ln -s /usr/local/apache2.2.26 /usr/local/apache`来达到简便的目的。

### 硬链接的使用案例

硬件存储的快照功能或者为备份数据创建多个硬链接,防止误删除数据。

最后

以上就是老迟到橘子为你收集整理的在linux系统中 关于硬链接,Linux系统中的硬链接和软连接的全部内容,希望文章能够帮你解决在linux系统中 关于硬链接,Linux系统中的硬链接和软连接所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部