linux中硬链接文件,科学网—Linux:文件的符号链接和硬链接 - 刘洋洋的博文

参考:中国大学MOOC课程《Linux系统管理》,授课教师:颜晨阳。

推荐阅读: t.cn/RLXkhpc

1 符号(symbolic)链接

与Windows的快捷方式很像,这些文件很小,仅提供指向实际文件的通道。

创建符号链接,使用ln (link)命令:$ ln -s [链接指向的文件][链接名]

第一个参数:源文件,即链接指向的文件

第二个参数:要创建的链接文件名

可以通过符号链接文件来读、写和执行文件,但符号链接文件与源文件是完全不同的两个文件,二者的属性不同。符号链接应用灵活,可以为任意文件创建符号链接。

b850afc7c8e83b3e2bf5c64adbd8100e.png

2 硬链接

2.1 文件存储方式

在Linux中,当划分磁盘分区并格式化时,整个分区会被划分为2部分,即Inode区和Data Block区。inode是index node的缩写,即索引节点。Linux的每个文件都被分成2部分存放:文件的唯一标识——inode-number和属性信息,放在Inode区的一个inode中,inode-number和inode是一一对应的;文件的实际数据放在Data Block区中。需要通过文件的inode来找到存放文件数据的data block。

2f287d0dc1b6c10082e23c7bdba7335d.png

在一个硬盘分区中,不可能有两个文件共用一个inode,因此两个文件的inode-number不可能是一样的。查看文件的inode-number:\$ ls -i

第一个属性就是inode-number。如果将硬盘分区中所有的文件比作一本书,inode区就是其目录,Data Block区就是其内容,我们必须通过目录来找到具体内容。

a2edeb81951ff6e0ed0ae719887e5974.png

Linux中目录是一张表,每个表项都代表了一个文件,目录中有多少文件,这张表中就有多少表项。

每个表项包含了两样数据:一是文件名,二是文件的inode-number。因此,Linux中存取文件的过程就是,通过文件名找到对应的inode-number,然后找到文件的inode,最后找到文件的数据。

dcc5c4dca738f44c6b427e143d48c58a.png

2.2 硬链接

在目录中让inode-number对应多个文件名,文件inode和数据还是一份(同一个文件),只是文件多出来一个名字,这个名字被称为硬链接。

daf9637fcc616768454832ec67d5aa53.png

创建硬链接:\$ ln [链接指向的文件][链接名]

删除源文件后,相当于删除了一个文件名,文件数据还可以通过其他文件名(硬链接)进行访问。

6f68cad7d7f2900c284952a9cf8d0306.png

注意

1)不建议为目录创建硬链接,容易造成目录遍历死循环。详见 c2.com/cgi/wiki?HardLink

2)不能跨硬盘分区创建硬链接。因为在不同的硬盘分区中,文件的inode-number不唯一。详见 t.cn/RLXkhpc

转载本文请联系原作者获取授权,同时请注明本文来自刘洋洋科学网博客。

链接地址:http://blog.sciencenet.cn/blog-3031432-1074556.html

上一篇:Linux:拷贝、移动、删除、创建文件

下一篇:Linux:打包和压缩文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值