参考链接:https://baijiahao.baidu.com/s?id=1770724291436944734&wfr=spider&for=pc
一、定义
1.硬链接(Hard Link)
硬链接是指多个文件名指向同一个物理文件的链接关系。它们在文件系统中具有相同的inode号(索引节点号),但可以位于不同的目录中。当创建硬链接时,实际上是为文件增加了一个新的路径入口。
1.1做一个硬链接
使用的是ln 命令
[root@localhost opt]# cat mx/test/1.txt
1
2
3
[root@localhost opt]# pwd
/opt
[root@localhost opt]# ln ./mx/test/1.txt ./hardLink.txt
[root@localhost opt]# ls
hardLink.txt mx
[root@localhost opt]# cat ./hardLink.txt
1
2
3
2.软连接(Symbolic Link)
软链接是指一个文件名指向另一个文件或目录的符号链接。与硬链接不同,软链接实际上是一个特殊类型的文件,其中包含指向目标文件或目录的路径信息。
2.1做一个软链接
用ln -s 命令
[root@localhost opt]# ln -s /opt/mx/test ./symbolicLink #注意我这里是直接做了一个目录的软链
[root@localhost opt]# ll
total 8
-rw-r--r-- 2 root root 6 Mar 28 14:21 hardLink.txt
drwxr-xr-x 3 root root 4096 Feb 25 16:53 mx
lrwxrwxrwx 1 root root 12 Mar 28 16:21 symbolicLink -> /opt/mx/test #这个文件类型是l,代表是个软链
[root@localhost opt]# ll ./symbolicLink/ #对比两个目录发现两个目录下的文件一样
total 16
-rw-r--r-- 2 root root 6 Mar 28 14:21 1.txt
-rw-r--r-- 1 root root 1143 Mar 13 14:29 ca.conf
-rw-r--r-- 1 root root 1517 Mar 13 14:29 ca.crt
-rw------- 1 root root 1708 Mar 13 14:29 ca.key
[root@localhost opt]# ll ./mx/test/
total 16
-rw-r--r-- 2 root root 6 Mar 28 14:21 1.txt
-rw-r--r-- 1 root root 1143 Mar 13 14:29 ca.conf
-rw-r--r-- 1 root root 1517 Mar 13 14:29 ca.crt
-rw------- 1 root root 1708 Mar 13 14:29 ca.key
二、工作原理
1.硬链接
在创建硬链接时,操作系统会为新创建的链接分配相同的inode号,并在文件系统中的目录项中添加对应的链接关系。因此,无论通过哪个文件名访问该文件,都指向同一个inode,即同一个文件内容。
#仔细看两个文件的inode,发现都是398527
[root@localhost opt]# stat hardLink.txtFile: hardLink.txtSize: 6 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 398527 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-03-28 16:12:02.347650497 +0800
Modify: 2025-03-28 14:21:29.901617545 +0800
Change: 2025-03-28 16:20:20.170640517 +0800Birth: 2025-02-25 16:54:07.759464599 +0800
[root@localhost opt]# stat ./mx/test/1.txtFile: ./mx/test/1.txtSize: 6 Blocks: 8 IO Block: 4096 regular file
Device: fd03h/64771d Inode: 398527 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2025-03-28 16:12:02.347650497 +0800
Modify: 2025-03-28 14:21:29.901617545 +0800
Change: 2025-03-28 16:20:20.170640517 +0800Birth: 2025-02-25 16:54:07.759464599 +0800
2.软连接
创建软链接时,操作系统会为其分配一个新的inode,并在文件系统中的目录项中添加软链接的信息,指向目标文件或目录的路径。当访问软链接时,操作系统会通过路径信息找到目标文件或目录。
使用ls -i命令,发现test目录和symbolicLink目录的inode不一样
-i, --inode print the index number of each file
[root@localhost opt]# ls -i ./
398527 hardLink.txt 400897 mx 12 symbolicLink
[root@localhost opt]# ls -i ./mx/
400899 cluster 400910 clusterName.txt 398526 test
三、特点
1.硬链接
硬链接与原始文件之间没有区别,它们是完全平等的。删除任何一个链接都不会影响其他链接。
硬链接不能跨越不同的文件系统,因为每个文件系统都有自己独立的inode空间。
#先删除源文件看看硬链接文件在不在,测试发现硬链接文件是存在的
[root@localhost opt]# rm -f ./mx/test/1.txt
[root@localhost opt]# ls
hardLink.txt mx symbolicLink
[root@localhost opt]# cat hardLink.txt
1
2
3
2.软连接
软链接是一个独立文件,它的大小仅占用几个字节的存储空间。
删除原始文件或目录不会影响软链接的存在,但访问软链接时若目标文件不存在,则会报错。
[root@localhost opt]# cd mx/
[root@localhost mx]# ls
cluster clusterName.txt test
[root@localhost mx]# cp -r test ./test1 #先备份一下目录
[root@localhost mx]# ls
cluster clusterName.txt test test1
[root@localhost mx]# cd ..
[root@localhost opt]# ls
hardLink.txt mx symbolicLink
[root@localhost opt]# rm -rf ./mx/test #删除原目录
[root@localhost opt]# ll -a
total 16
drwxr-xr-x. 3 root root 4096 Mar 28 16:21 .
dr-xr-xr-x. 18 root root 4096 Feb 7 13:45 ..
-rw-r--r-- 1 root root 6 Mar 28 14:21 hardLink.txt
drwxr-xr-x 3 root root 4096 Mar 28 16:39 mx
lrwxrwxrwx 1 root root 12 Mar 28 16:21 symbolicLink -> /opt/mx/test # 链接文件是在的
[root@localhost opt]# ls ./symbolicLink
./symbolicLink
[root@localhost opt]# ls ./mx/
cluster clusterName.txt test1
看截图效果会明显一点,链接文件存在但是已经不能用ls 命令查看了
四、应用场景
1.硬链接
共享文件:多个用户或进程可以使用硬链接来共享同一个文件,节省存储空间。
备份文件:通过创建硬链接,可以在不占用额外存储空间的情况下生成文件的备份副本。
系统文件管理:一些系统文件经常需要在不同位置进行引用,通过创建硬链接可以简化管理和维护。
2.软链接
快捷方式:软链接可以创建桌面或文件夹中的快捷方式,方便用户快速访问目标文件或目录。
软件安装:在某些操作系统中,软链接常用于指向已安装软件的可执行文件,简化软件的升级和管理。
跨文件系统引用:软链接可以跨越不同的文件系统,将一个文件或目录链接到另一个文件系统中。