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

304 篇文章 6 订阅
304 篇文章 8 订阅

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

一、硬链接(Hard Link)

  1. 定义

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

  1. 特点

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

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

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

限制:

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

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

  1. 创建方法

使用ln命令创建硬链接:

ln 原文件 硬链接文件

4.示例

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系统中的快捷方式。

  1. 特点

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

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

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

删除影响:

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

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

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

  1. 创建方法

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

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

  1. 示例

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏大圣运维

编写不易,还请支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值