软硬链按的概念是 Linux 系统中重要的基础知识之一,需要读者熟练掌握。硬链接数属性对应于前文“ Is -Ii ”命令结果中的第3列(数字)
[root@localhost ~]# ls -li
total 8
33575027 -rw-r--r-- 1 root root 4 Jul 24 16:26 1.txt
链接的概念
在Linux 系统中,链接可分为两种:一种为硬链接(Hard Link),另一种为软链接(Soft link)或称符号链接(Symbolic Link)。
ln命令就是用来创建链接文件的,在默认不带任何参数的情况下,执行ln命令创建的链接是硬链接。如果是ln -s则是创建软链接
# 语法
创建硬链接的语法:ln 原始文件 目标文件(硬链接文件)
创建软链接的语法:ln -s 原始文件 目标文件(你要创建的软链接文件)
硬链接
## 概念
硬链接是指通过索引节点(Inode)进行的链接。
在Linux 系统中,多个文件名指向同一个索引节点Inode(Inode 号相同) 是正常且被允许的。这种情況下的两个文件就称作互为硬链接文件,本质上就是相同文件的两个名字(类似真名和网名一样,都表示一个人)。
硬链接文件就相当于是原始文件的另外一个访问入口。硬链接的作用之一是允许个文件拥有多个有效的文件名(多个访问入口,类似于超市的多个入口),这样用户就可以建立硬链接到重要的文件上,为避免“误删”源数据加一份保险(很多硬件存储的快照功能就应用了这个原理,增加一个快照就多了一个硬链接,多了一个硬链接就会增加一层数据的安全)。
因为文件系统(ext)的原理是,只要文件的索引节点(Inode Index) 还有一个以上的硬链接,那么,只删除其中的一个硬链接(即仅仅删除了该文件的链接指向)并不会影响素引节点本身和其他的链按(即数据文件实体并未被删除)
也就是说,在Linux 系统中,删除静态文件(没有进程调用的文件)的条件是与之相关的所有硬链接文件均被删除(街时这样理解即可,后文会进一步介绍其与进程的占用也有关)。#一个静态文件被彻底删除的条件就是该文件的硬链接数量为零。
## 如何创建
ln 源文件 目标文件(硬链接文件)
## 例如
[root@localhost ~]# ls -li
33575027 -rw-r--r-- 1 root root 4 Jul 24 16:26 1.txt
[root@localhost ~]# ln 1.txt 1_hard_link_test //给1.txt创建一个硬链接
[root@localhost ~]# ls -li //再看一下,发现硬链接数变为2,索引节点相同
total 12
33575027 -rw-r--r-- 2 root root 4 Jul 24 16:26 1_hard_link_test
33575027 -rw-r--r-- 2 root root 4 Jul 24 16:26 1.txt
## 总结
1、inode号相同的文件互为硬链接文件,本质上是同一文件的不同文件名
2、删除硬链接文件或者删除源文件任意之一,文件实体并未被刪除。只有删除了源文件及与源文件对应的所有硬链接文件,文件实体才会被删除。也就是说,对于静态文件(没有进程正在调用的文件)来讲,当对应的硬链接数为0时,文件就被删除。
3、可以通过对文件设置硬链接文件,来防止重要文件被误删。相当于备份。
4、创建硬链接只能针对文件,不能针对目录。硬链接不可以跨越系统的分区,软链接可以
软链接
## 软链接:相当于windows里的快捷方式
如:
[root@localhost ~]# ll /bin
lrwxrwxrwx. 1 root root 7 Aug 17 15:23 /bin -> usr/bin
## 如何创建软链接
ln -s 源文件 目标文件(你要创建的软链接文件)
## 例子
比如:我给我的1.txt创建软链接1txt:
[root@localhost ~]# ln -s 1.txt 1txt
[root@localhost ~]# ls -li
total 12
33575027 -rw-r--r-- 2 root root 4 Jul 24 16:26 1_hard_link_test
33575028 lrwxrwxrwx 1 root root 5 Jul 24 17:04 1txt -> 1.txt #//创建的软链接
33575027 -rw-r--r-- 2 root root 4 Jul 24 16:26 1.txt
[root@localhost ~]# cat 1txt //当我们访问这个软链接文件时,其实就是在访问源文件的本身。
123
## 特性
1.软链接类似于一个文本文件,里面存放的是源文件的路径,指向源文件实体(可用readlink查看其指向)
2.删除软链接文件,其实只是删除了一个指向,并不会对源文件造成影响。(比如删除快捷方式,QQ照样用)
软链接失效的时候一般是白宇红底闪烁提示。
3.删除源文件,软链接文件依然存在,但是无法访问指向源文件路径的内容了。
4.软链接和源文件是不同类型的文件,也是不同的文件,Inode号也不相同。
5.软链接文件的文件类型为字母(l),也可以用rm命令删除
## 软链接的应用场景
1)软件升级
2)代码发布
3)不方便移动的目录
4)数据回滚
5)程序读取
硬链接数
什么都不创建的情况下,一个目录有2个硬链接 ll -d 可看
一个是它本身
一个是隐藏目录.
[root@localhost ~]# mkdir 01
[root@localhost ~]# ll -d 01
drwxr-xr-x. 2 root root 6 Sep 7 10:40 01
[root@localhost ~]# ll -i 目录01的inode号为1078613
total 56
1078613 drwxr-xr-x. 2 root root 6 Sep 7 10:40 01
......省略输出
[root@localhost ~/01]# ll -ai
total 4
1078613 drwxr-xr-x. 2 root root 6 Sep 7 10:40 . 01下面.目录的inode号也是1078613
33574977 dr-xr-x---. 7 root root 4096 Sep 7 10:40 ..