【信创】Linux中软链接和硬链接详解|统信|麒麟|方德

鹏大搞运维 2024-09-14 14:13:18

原文链接:

在Linux文件系统中,链接(Link)是一种将文件名与实际文件数据关联的机制。链接分为两种类型:硬链接(Hard Link)和软链接(Symbolic Link),也称为符号链接。理解这两种链接的区别和使用方法,有助于更有效地管理和操作文件系统。

一、硬链接(Hard Link)

1. 定义

硬链接是指多个文件名指向同一个文件的数据块,即它们共享相同的inode编号。硬链接相当于为同一文件创建了别名。

2. 特点

共享inode编号:硬链接和原文件具有相同的inode编号,指向相同的物理数据块。

数据同步更新:对硬链接或原文件的任何修改都会同时反映在另一个文件上,因为它们共享相同的数据。

删除影响:删除其中一个文件名,不会影响另一个文件名的访问,文件数据只有在所有硬链接都被删除后才会被系统回收。

限制:

不能跨文件系统:硬链接只能在同一文件系统内创建,无法跨分区或跨磁盘。

不能对目录创建:普通用户不能对目录创建硬链接,以避免造成文件系统的循环引用。

3. 创建方法

使用ln命令创建硬链接:

ln 原文件 硬链接文件

示例

1)创建源文件

root@pdsyw-PC:~# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 512G 0 disk

├─sda5 8:5 0 100G 0 part /

└─sda7 8:7 0 281.9G 0 part /data

root@pdsyw-PC:~# mkdir /pdsyw

root@pdsyw-PC:~# echo pdsyw1024 > /pdsyw/pdsyw1024.txt

root@pdsyw-PC:~# cat /pdsyw/pdsyw1024.txt

pdsyw1024

在系统/dev/sda5分区中创建一个新的目录 /pdsyw,然后在该目录下创建一个名为 pdsyw1024.txt 的文本文件,并在其中写入字符串 pdsyw1024。最后,通过 cat 命令确认文件内容已正确写入。这些操作可能用于测试文件系统的写入权限、组织数据或为后续脚本和应用程序准备特定的文件结构。

2)创建硬链接

root@pdsyw-PC:~# cd /pdsyw/

root@pdsyw-PC:/pdsyw# ln pdsyw1024.txt hardpdsyw1024.txt

root@pdsyw-PC:/pdsyw# cat hardpdsyw1024.txt

pdsyw1024

在 /pdsyw 目录下创建一个名为 hardpdsyw1024.txt 的硬链接文件,指向已存在的 pdsyw1024.txt 文件。 验证 hardpdsyw1024.txt 文件的内容。

3)查看inode与链接数

root@pdsyw-PC:/pdsyw# ls -li

总用量 8

2883586 -rw-r--r-- 2 root root 10 9月 13 13:36 hardpdsyw1024.txt

2883586 -rw-r--r-- 2 root root 10 9月 13 13:36 pdsyw1024.txt

通过运行ls -li命令,验证这两个文件确实共享相同的inode,并且链接数为2,表明有两个文件名指向同一个数据块。

4)创建跨分区的硬链接报错

root@pdsyw-PC:/pdsyw# ln pdsyw1024.txt /data/hardpdsyw1024.txt

ln: 无法创建硬链接'/data/hardpdsyw1024.txt' => 'pdsyw1024.txt': 无效的跨设备链接

尝试在不同目录(/pdsyw 和 /data)之间创建一个硬链接,将 /pdsyw/pdsyw1024.txt 链接到 /data/hardpdsyw1024.txt。无法在不同的设备(文件系统)之间创建硬链接,因为这在技术上是不允许的。

5)删除源文件硬链接文件依旧可查看

root@pdsyw-PC:/pdsyw# ls -ltr

总用量 8

-rw-r--r-- 2 root root 10 9月 13 13:36 pdsyw1024.txt

-rw-r--r-- 2 root root 10 9月 13 13:36 hardpdsyw1024.txt

root@pdsyw-PC:/pdsyw# rm -rf pdsyw1024.txt

root@pdsyw-PC:/pdsyw# ls -ltr

总用量 4

-rw-r--r-- 1 root root 10 9月 13 13:36 hardpdsyw1024.txt

root@pdsyw-PC:/pdsyw# cat hardpdsyw1024.txt

pdsyw1024

pdsyw1024.txt 被删除,但由于存在另一个硬链接 hardpdsyw1024.txt,文件的数据并未被真正删除。

二、软链接(Symbolic Link)

1. 定义

软链接是一个特殊的文件,内容是指向另一个文件或目录的路径。软链接类似于Windows系统中的快捷方式。

2. 特点

独立的inode编号:软链接有自己的inode编号,但其数据块包含的是目标文件的路径名。

可跨文件系统:软链接可以指向不同文件系统中的文件或目录。

可链接目录:软链接可以指向目录,这使得它在目录结构管理中非常灵活。

删除影响:

删除软链接:不会影响原文件或目录。

删除原文件或目录:软链接变为悬空链接(Dangling Link),无法访问目标。

权限继承:访问软链接时,权限是基于目标文件或目录的权限。

3. 创建方法

使用ln -s命令创建软链接:

ln -s 原文件或目录 软链接文件或目录

4. 示例

1)创建文件软链接查看inode与链接数

root@pdsyw-PC:/pdsyw# ln -s pdsyw1024.txt softpdsyw1024.txt

root@pdsyw-PC:/pdsyw# ls -li

总用量 4

2883586 -rw-r--r-- 1 root root 10 9月 13 13:36 pdsyw1024.txt

2883587 lrwxrwxrwx 1 root root 13 9月 13 13:44 softpdsyw1024.txt -> pdsyw1024.txt

root@pdsyw-PC:/pdsyw# cat softpdsyw1024.txt

pdsyw1024

创建一个名为 softpdsyw1024.txt 的软链接,指向 pdsyw1024.txt 文件。软链接类似于 Windows 系统中的快捷方式,通过路径指向目标文件。softpdsyw1024.txt 的 inode 号码与 pdsyw1024.txt 的 inode 号码不同,说明软链接有其独立的 inode。 软链接的链接数通常为 1,因为它本身就是一个独立的文件,指向目标文件。 虽然 softpdsyw1024.txt 是一个软链接,但 cat 命令会解析链接并显示目标文件 pdsyw1024.txt 的内容,即 pdsyw1024。

2)创建跨分区文件软链接并查看inode与链接数

root@pdsyw-PC:~# ln -s /pdsyw/pdsyw1024.txt /data/

root@pdsyw-PC:~# ls -li /data/

12 lrwxrwxrwx 1 root root 20 9月 13 14:09 pdsyw1024.txt -> /pdsyw/pdsyw1024.txt

root@pdsyw-PC:~# cat /data/pdsyw1024.txt

pdsyw1024

此命令将在 /data/ 目录下创建一个名为 pdsyw1024.txt 的软链接,指向 /pdsyw/pdsyw1024.txt。/pdsyw 和 /data 分别挂载在不同的分区(如 sda5 和 sda7) ,因此软链接允许在不同的文件系统或分区之间创建链接,这是硬链接所不支持的。软链接 pdsyw1024.txt 拥有自己的独立 inode,并且本身作为一个独立的文件,链接数为 1。

3)创建目录软链接查看inode与链接数

root@pdsyw-PC:~# ln -s /pdsyw/ /pdsyw1024

root@pdsyw-PC:~# ls -li / | grep pdsyw

2883585 drwxr-xr-x 2 root root 4096 9月 13 13:44 pdsyw

16 lrwxrwxrwx 1 root root 7 9月 13 14:06 pdsyw1024 -> /pdsyw/

root@pdsyw-PC:~# ls -li /pdsyw1024/*

2883586 -rw-r--r-- 1 root root 10 9月 13 13:36 /pdsyw1024/pdsyw1024.txt

2883587 lrwxrwxrwx 1 root root 13 9月 13 13:44 /pdsyw1024/softpdsyw1024.txt -> pdsyw1024.txt

在根目录 / 下创建一个名为 pdsyw1024 的软链接,指向 /pdsyw/ 目录。pdsyw 目录和 pdsyw1024 软链接拥有不同的 inode 号码,说明它们是独立的文件实体。 pdsyw 目录的链接数为 2,表示它至少有两个目录项指向该 inode(自身和一个子目录)。pdsyw1024 软链接的链接数为 1,表示它自身作为一个独立的文件存在。软链接可以指向不同分区或文件系统中的目录,这在硬链接中是不支持的。

4)创建跨分区目录链接数并查看inode与链接数

root@pdsyw-PC:~# ln -s /pdsyw /data/pdsyw

root@pdsyw-PC:~# ls -li /data/pdsyw

13 lrwxrwxrwx 1 root root 6 9月 13 14:11 /data/pdsyw -> /pdsyw

在 /data/ 目录下创建一个名为 pdsyw 的软链接,指向 /pdsyw 目录。/pdsyw 和 /data 分别挂载在不同的分区(如 sda5 和 sda7)。硬链接无法跨文件系统创建,但软链接不受此限制。软链接 /data/pdsyw 拥有独立的 inode 号码,与目标目录 /pdsyw 不同,软链接的链接数为 1,表示它自身作为一个独立的文件存在。

5)删除源文件查看链接文件

root@pdsyw-PC:~# cd /pdsyw

root@pdsyw-PC:/pdsyw# ls -li

总用量 4

2883586 -rw-r--r-- 1 root root 10 9月 13 13:36 pdsyw1024.txt

2883587 lrwxrwxrwx 1 root root 13 9月 13 13:44 softpdsyw1024.txt -> pdsyw1024.txt

root@pdsyw-PC:/pdsyw# rm -rf pdsyw1024.txt

root@pdsyw-PC:/pdsyw# ls -li

总用量 0

2883587 lrwxrwxrwx 1 root root 13 9月 13 13:44 softpdsyw1024.txt -> pdsyw1024.txt

root@pdsyw-PC:/pdsyw# cat softpdsyw1024.txt

cat: softpdsyw1024.txt: 没有那个文件或目录

因为 pdsyw1024.txt 是一个普通文件,且其链接数为 1,删除操作会从文件系统中移除该文件的数据块。由于源文件 pdsyw1024.txt 已被删除,符号链接 softpdsyw1024.txt 指向的目标文件不存在,因此 cat 命令无法读取内容,显示错误信息。

6)删除源目录查看链接目录

root@pdsyw-PC:~# rm -rf /pdsyw

root@pdsyw-PC:~# ls -li / | grep pdsyw

16 lrwxrwxrwx 1 root root 7 9月 13 14:06 pdsyw1024 -> /pdsyw/

root@pdsyw-PC:~# ls -li /pdsyw1024/*

ls: 无法访问'/pdsyw1024/*': 没有那个文件或目录

root@pdsyw-PC:~# ls -li /data/pdsyw/*

ls: 无法访问'/data/pdsyw/*': 没有那个文件或目录

root@pdsyw-PC:~# ls -li /data/pdsyw

13 lrwxrwxrwx 1 root root 6 9月 13 14:11 /data/pdsyw -> /pdsyw

由于 /pdsyw 目录已被删除,软链接 pdsyw1024 指向的目标目录 /pdsyw/ 不存在。因此,尝试通过软链接访问其内容时,系统提示“没有那个文件或目录”。 同样由于 /pdsyw 目录已被删除,软链接 /data/pdsyw 指向的目标目录 /pdsyw/ 不存在。因此,尝试通过软链接访问其内容时,系统提示“没有那个文件或目录”。

三、对比总结

特性

硬链接

软链接

inode编号

相同

不同

是否共享数据块

否(指向路径)

是否可跨文件系统

是否可链接目录

否(普通用户)

删除原文件影响

无影响

链接失效,成为悬空链接

创建命令

ln 原文件 链接文件

ln -s 原文件 链接文件

四、适用场景

硬链接

数据备份:在不增加实际数据占用空间的情况下,为文件创建备份。

确保文件可用性:即使原始文件名被删除,硬链接仍可访问文件数据。

软链接

链接目录:软链接可以指向目录,方便访问深层次的目录结构。

跨文件系统引用:可以链接不同文件系统中的文件或目录。

快捷方式:为常用文件或目录创建快捷访问路径。

五、注意事项

硬链接的限制:

不能对目录创建(普通用户),因为可能导致文件系统循环。

不能跨文件系统创建。

软链接的风险:

软链接可能成为悬空链接,需要定期检查。

访问软链接时,需要目标文件或目录的适当权限。

权限和安全:

操作软链接时,实际权限取决于目标文件或目录的权限设置。

硬链接和软链接是Linux系统中管理文件和目录的重要工具。硬链接适用于在同一文件系统内创建文件的多个引用,确保数据的可用性;软链接则提供了更大的灵活性,可以跨文件系统链接文件和目录,方便快捷地访问资源。在实际使用中,应根据需求选择合适的链接类型,注意其特性和限制,避免产生悬空链接或循环引用,确保系统的稳定性和安全性。如果您觉得这篇文章有用,请分享和转发,同时别忘了点个关注和在看,以便未来获取更多实用的技术信息和教程。感谢大家的阅读,我们下次再见!

0 阅读:0

鹏大搞运维

简介:感谢大家的关注