硬链接和软链接的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬链接和软链接的区别相关的知识,希望对你有一定的参考价值。

# 硬链接和软链接的区别
## 1、概念
在linux中,链接可分为两种:一种为硬链接,另一种为软链接。
硬链接:ln 源文件 目标文件
软链接:ln -s(soft)源文件 目标文件
### 硬链接
硬链接是指通过索引节点inode来进行链接。
linux系统中每个文件对应一个inode,并且允许多个文件名指向用一个inode。这种情况的文件就成为硬链接。
它的作用之一就是允许一个文件拥有多个入口,防止重要数据误删。

硬链接的原理:

技术分享



### 软链接
软链接也称为符号链接,相当于windows中的快捷方式。文件类型为L,是一个特殊的文件。文件中包含了另一个文件的路径信息内容。

软链接的原理:

技术分享
## 2、实验
###实验1:首先创建一个magedufile,可以看到硬链接数为1,通过ln创建一个硬链接magedufile_link,再次通过ls -li,可以发现数字变成2,两个文件第一列inode数量都为33612019。cat硬链接内容与源文件一样。把源文件删除后,link文件依然还在,内容没丢失,链接数变为1。ln不能对目录创建硬链接。

[[email protected] magedu]#ls -l
-rw-r--r--. 1 root root 17 Jul 23 13:38 magedufile
[[email protected] magedu]#cat magedufile 
i am study linux
[[email protected] magedu]#ln magedufile magedufile_link
[[email protected] magedu]#ls -li
total 8
33612019 -rw-r--r--. 2 root root 17 Jul 23 13:38 magedufile
33612019 -rw-r--r--. 2 root root 17 Jul 23 13:38 magedufile_link
[[email protected] magedu]#cat magedufile_link 
i am study linux
[[email protected] magedu]#rm -f magedufile
[[email protected] magedu]#ls
magedufile_link
[[email protected] magedu]#cat magedufile_link 
i am study linux
[[email protected] magedu]#ls -li
total 4
33612019 -rw-r--r--. 1 root root 17 Jul 23 13:38 magedufile_link
[[email protected] ~]#ln Desktop Desktop.bak
ln: ‘Desktop’: hard link not allowed for directory

总结: 
    (1)具有相同inode节点号的多个文件是为互为硬链接文件
    (2)删除硬链接文件或者源文件,文件本身并未被删除
    (3)删除文件的所有硬链接和源文件,文件才真正被删除
    (4)硬链接文件是文件的另一个入口
    (5)硬链接文件可以用rm命令删除
###实验2:创建一个文件,通过ln -s创建软链接后查看发现inode不同,软链接后面跟一个->指向源文件,当删除源文件后,软链接指向发生错误。

[[email protected] app]#echo "i am study linux" >/app/magedudir
[[email protected] app]#ls -l
total 4
-rw-r--r--. 1 root root 17 Jul 23 15:01 magedudir
[[email protected] app]#ln -s magedudir magedudir_slink
[[email protected] app]#ls -li 
total 4
67 -rw-r--r--. 1 root root 17 Jul 23 15:01 magedudir
68 lrwxrwxrwx. 1 root root  9 Jul 23 15:03 magedudir_slink -> magedudir
![](http://i.imgur.com/rA07xhv.png)

总结:
(1)快捷方式,可以通过readlink查看指向
(2)是一个文本文件。里面存放的是源文件的路径,指向源文件
(3)删除源文件,软链接依然存在,但是无法正常指向源文件
(4)失效的时候红底闪烁提示
(5)软链接和源文件是不同类型的文件,也是不同的文件。inode不相同。
(6)删除软链接文件可以用rm命令



## 3、区别
(1)创建方式的不同。默认不带参数的情况下,ln创建的是硬链接,带-s参数创建的是软链接
(2)硬链接文件与源文件的inode相同,而软链接文件的inode与源文件不同
(3)ln不能对目录创建硬链接,但可以创建软链接。
(4)删除文件的软链接文件,对源文件及硬链接文件无任何影响
(5)删除文件的硬链接文件,对源文件及软链接文件无任何影响
(6)删除链接文件的源文件,对硬链接文件无影响,会导致软链接失效
(7)同时删除源文件及其硬链接,整个文件才会被删除
(8)软链接可以跨文件系统,硬链接不可以跨文件系统

##4、附加
###文件的删除原理
文件的删除由两个变量控制:
                     i_link  文件的硬链接数量
                     i_count 引用计数(有一个程序调用就+1)
文件删除的条件:
                     i_link=0 && i_count=0

以上是关于硬链接和软链接的区别的主要内容,如果未能解决你的问题,请参考以下文章

Linux中硬链接和软链接的区别与联系!

硬链接和软链接的区别

什么是硬链接和软链接 --- 2021-11-08

描述硬链接和软链接区别

硬链接和软链接的区别

Linux硬链接和软连接的区别与总结