Symbolic link 与 Hard link 的区别

本文详细介绍了Linux系统中的两种链接方式:硬链接(Hard Link)与符号链接(Symbolic Link)。阐述了它们的工作原理及使用场景,并通过实例演示如何创建这两种链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linuxlink分为两种,一种是Symbolic link,另一种是HardLink

Synbolic link ln -s f1 f2

Hard link:     ln f1 f2

 

要区分他们,首先要理解inode index这个概念。

linux的文件系统中,保存在磁盘分区中的文件不管是什么类型的都会给他分配一个编号,称为Inode index。通过这个编号来找到对应的文件。

 

当创建一个文件时,新生成的文件名就回自动指向inode index

[aiwang@localhost test]$ touch f1

[aiwang@localhost test]$ echo aaa > f1

[aiwang@localhost test]$ cat f1

aaa

[aiwang@localhost test]$ ll -i

total 0

393446 -rw-rw-r--. 1 aiwang aiwang 0 Dec  412:01 f1

f1就会自动指向这个inode index,此处为393446。这个Inode index所指向的文件中的内容为aaa。

 

Hard link

[aiwang@localhost test]$ ln f1 f2

[aiwang@localhost test]$ ll -i

total 0

393446 -rw-rw-r--. 2 aiwang aiwang 0 Dec  4 12:01 f1

393446 -rw-rw-r--. 2 aiwang aiwang 0 Dec  4 12:01 f2

通过hard link生成的f2文件名与原先的f1文件名指向的是同一个Inode index。不过有两条限制,一是不能跨filesystems,二是不能链接到目录

一,不能跨filesystems,可以理解,假设可以跨filesystems,如果hardlink所在的filesystem已挂载,而实际数据的filesystem没有挂载,想象一下会怎样

二,不能链接到目录,假设有一目录C,如果可以链接到目录,在当前目录的block中增加一条目录档案C的inode和该目录在当前目录下的文件名,我们 可以通过目录C的inode去读取C目录档案的block,从而得到目录档案中记载的下一级目录档案和文件的inode和文件名,进而读取该目录下的档案 和文件

 

Synbolic link

[aiwang@localhost test]$ ln -s f1 f3

[aiwang@localhost test]$ ll -i

total 0

393446 -rw-rw-r--. 2 aiwang aiwang 0 Dec  4 12:01 f1

393446 -rw-rw-r--. 2 aiwang aiwang 0 Dec  4 12:01 f2

393455 lrwxrwxrwx. 1 aiwang aiwang 2 Dec  4 12:06 f3 -> f1


可以看出,通过Synbolic link生成的f3文件名并没有指向原先的393446(aaa),而是连接到了一个新的index,这个新的inode index所指向的文件是一个文本文件,其中保存的是被连接文件f1的位置信息。然后在对照f1的文件名,得到f1的inode,进而读取f1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值