【Linux基础】Linux硬链接简介

本文目录
[隐藏]

Linux文件系统中,链接主要分为硬链接和软链接两种类型,主要使用ln指令来进行文件链接。

硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。

有关Linux 虚拟文件系统 (VFS)的知识我们今天不展开来讲,我们今天主要介绍下Linux硬链接相关知识。Linux软链接相关知识请看:【Linux基础】Linux软链接简介

image

一、Linux硬链接简介

Linux下的文件是通过索引节点(Inode)来识别文件的,硬链接可以认为是一个指向文件索引节点的指针,系统并不为它重新分配inode。就像一个文件有多个文件名,每添加一个硬链接,文件的链接数就加1。

硬链接文件有两个限制

1)、不允许给目录创建硬链接;

2)、只有在同一文件系统中的文件之间才能创建硬链接。

二、Linux硬链接命令格式

Linux硬链接的命令格式如下所示:

ln [options] existingfile newfile

ln [options] existingfile-list directory

说明:

第一种格式是为”existingfile”创建硬链接,硬链接的文件名为”newfile”。

第二种格式是在”directory”目录中,为 ”existingfile-list”中包含的所有文件创建一个同名的硬链接。

常用选项[options]

-f 无论”newfile”存在与否,都创建链接。
-n 如果”newfile”已存在,就不创建链接。

三、Linux硬链接使用举例

Linux硬链接使用示例如下所示:

#ll -il
total 0
1069026 -rw-r--r-- 2 root root 0 Dec 25 21:30 file1
1069029 -rw-r--r-- 1 root root 0 Dec 25 21:29 file2
#ln file2 file2hard
#ll -il
total 0
1069026 -rw-r--r-- 2 root root 0 Dec 25 21:30 file1
1069029 -rw-r--r-- 2 root root 0 Dec 25 21:29 file2
1069029 -rw-r--r-- 2 root root 0 Dec 25 21:29 file2hard

说明:

在上面的例子中,创建链接前,file1 显示的链接数目为1;

创建链接后,

1)file1和file1hard的链接数目都变为2;

2)file1和file1hard在inode号是一样的;

3)file1和file1hard显示的文件大小也是一样;

file1和file1hard是同一个文件的两个名字,具有同样的索引节点号和文件属性。

建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。

你可以删除其中任何一个,如rm file2 ,但每次只会删除一个指针,此时链接数减一,只有将所有指向文件内容的指针,也即链接数删为0时,内核才会真正把文件内容从磁盘上删除。

因此,硬链接可以算是为文件上了一个保险,用RM命令删除建立了硬链接的文件时,并不会真正的将文件删除掉,从而减小了误删的风险。

四、Linux硬链接的缺点

虽然硬链接十分实用,但却有如下两个缺点:

1)不可以在不同文件系统的文件间建立链接。

2)只有超级用户才可以为目录创建硬链接。

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: