一、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命令删除建立了硬链接的文件时,并不会真正的将文件删除掉,从而减小了误删的风险。