一、前言¶
在 Linux 中有两种类型的文件链接,一种是软链接,也称符号链接;另一种是硬链接。下面对比实例具体说明一下两种文件链接。
二、软链接¶
2.1 定义¶
软链接(也称为符号链接)是一个实实在在的文件,该文件指向存放在虚拟目录结构中某个地方的另一个文件。这两个以符号方式链接在一起的文件彼此的内容并不相同。你可以把它想象成咱们平时使用的windows电脑的快捷方式。这里需要注意:
- 原始文件必须已经存在
- 如果原始文件已删除,那已经创建的软链接显示红色,并且原始文件会一闪一闪的
- 修改软链接文件内容,原始文件内容也会被修改
- 删除软链接文件,原始文件仍然存在
2.2 命令参数¶
$ ln -s 原始文件 软链接文件
2.3 示例说明¶
1、创建一个软链接
(1)创建一个名为1.py的原始文件
$ vim 1.py
1111111111111111111111111
2222222222222222222222222
(2)创建名为slink_1.py的软链接文件
$ ln -s 1.py slink_1.py

(3)查看软链接文件内容
$ cat slink_1.py
1111111111111111111111111
2222222222222222222222222
2、模拟只删除原始文件,不删除软链接文件
(1)创建一个名为1.py的原始文件
$ vim 1.py
1111111111111111111111111
2222222222222222222222222
(2)创建名为slink_1.py的软链接文件
$ ln -s 1.py slink_1.py
(3)删除名为1.py的原始文件
$ rm 1.py -f
(4)再次查看软链接文件
$ cat slink_1.py
cat: slink_1.py: No such file or directory

说明:如果原始文件已删除,那已经创建的软链接显示红色,软链接文件不复存在
3、修改软链接文件内容,查看原始文件内容是否也会被修改
(1)创建一个名为1.py的原始文件
$ vim 1.py
1111111111111111111111111
2222222222222222222222222
(2)创建名为slink_1.py的软链接文件
$ ln -s 1.py slink_1.py
(3)修改slink_1.py软链接文件
$ vim slink_1.py
1111111111111111111111111
2222222222222222222222222
333333333333333333333
(4)查看名为1.py的原始文件
$ cat 1.py
1111111111111111111111111
2222222222222222222222222
333333333333333333333
说明:修改软链接文件内容,原始文件内容也会被修改
4、删除软链接文件,查看原始文件内容是否也会被删除
(1)创建一个名为1.py的原始文件
$ vim 1.py
1111111111111111111111111
2222222222222222222222222
(2)创建名为软链接文件
$ ln -s 1.py slink_1.py
(3)删除slink_1.py软链接文件
$ rm slink_1.py -f
(4)查看原始文件
$ cat 1.py
1111111111111111111111111
2222222222222222222222222
说明:删除软链接文件,原始文件仍然存在
三、硬链接¶
3.1 定义¶
硬链接创建的是一个独立的虚拟文件,其中包含了原始文件的信息以及位置。但是两者就根本而言是同一个文件。更通俗的说,就是一个文件更名了,实际上是同一文件。这里需要注意:
- 原始文件必须已经存在
- 如果原始文件已删除,那已经创建的硬链接不会被删除
- 修改硬链接文件内容,原始文件内容也会被修改
- 删除硬链接文件,原始文件仍然存在
3.2 命令参数¶
$ ln 原始文件 硬链接文件
3.3 示例说明¶
1、创建一个硬链接
(1)创建一个名为2.py的原始文件
$ vim 2.py
2222222222222222222
4444444444444444444
(2)创建名为hard_1.py的硬链接文件
$ ln 2.py hard_2.py

说明:上面的2代表两个文件名
(3)查看硬链接文件内容
$ cat hard_2.py
2222222222222222222
4444444444444444444
2、模拟只删除原始文件,不删除硬链接文件
(1)创建一个名为2.py的原始文件
$ vim 2.py
2222222222222222222
4444444444444444444
(2)创建名为hard_2.py的硬链接文件
$ ln 2.py hard_2.py
(3)删除名为2.py的原始文件
$ rm 2.py -f
(4)再次查看硬链接文件
$ cat hard_2.py
2222222222222222222
4444444444444444444
说明:如果原始文件已删除,那已经创建的硬链接文件依旧存在
3、修改硬链接文件内容,查看原始文件内容是否也会被修改
(1)创建一个名为2.py的原始文件
$ vim 2.py
2222222222222222222
4444444444444444444
(2)创建名为hard_2.py的硬链接文件
$ ln 2.py hard_2.py
(3)修改hard_2.py硬链接文件
$ vim hard_2.py
2222222222222222222
4444444444444444444
5555555555555555555
(4)查看名为2.py的原始文件
$ cat 2.py
2222222222222222222
4444444444444444444
5555555555555555555
说明:修改硬链接文件内容,原始文件内容也会被修改
4、删除硬链接文件,查看原始文件内容是否也会被删除
(1)创建一个名为2.py的原始文件
$ vim 2.py
2222222222222222222
4444444444444444444
(2)创建名为hard_2.py的硬链接文件
$ ln 2.py hard_2.py
(3)删除hard_2.py硬链接文件
$ rm hard_2.py -y
(4)查看原始文件
$ cat 2.py
2222222222222222222
4444444444444444444
说明:删除软链接文件,原始文件仍然存在
四、区别¶
从定义上进行区别:
- 软链接(符号链接):类似于windows快捷方式,存放源文件位置
- 硬链接:同一个分区中inode号码相同的文件,互为硬链接
从创建方式上进行区别:
- 软连接通过
ln -s命令进行创建 - 硬链接通过
ln命令进行创建
从特点上进行区别:
- 软件连接是比较常用的,可以给文件,目录创建
- 硬链接只能给文件创建,不能跨分区,无法给目录创建硬链接,较少使用
从删除上进行区别:
- 删除软连接,源文件不受影响
- 删除源文件,软连接无法使用,红底白字闪烁
- 删除硬链接,源文件,软连接无影响
- 删除源文件和硬链接,这个文件就被删除了
五、总结¶
硬链接和软链接基本介绍已经完毕,下面再从图片的方式对比一下二者的区别:
