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