格式:ln [选项] 目标 目录
链接有两种,一种被称为硬链接(Hard Link),另一种被称为软链接即符号链接(Symbolic Link)。建立硬链接时,链接文件和被链接文件必须位于同一个文件系统中,并且不能建立指向目录的硬链接。而对符号链接,则不存在这个问题。默认情况下,ln产生硬链接。如果给ln命令加上- s选项,则建立符号链接。
(1)两者的使用比较
硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(inode)。当移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置(删除链接不会删除源文件,删除源文件不会删除链接)。
符号链接是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。它们会指向文件系统中并不存在的一个位置(删除链接并不会删除原文件,删除源文件会删除链接)。
(2)从Inode的层次来比较
在Linux 文件系统中,inode值相同的文件是硬链接文件,也就是说,不同的文件名,inode可能是相同的,一个inode值可以对应多个文件。
[root@localhost ~]# ls -li sun.txt //注:查看sun.txt的属性;
2408263 -rw-r--r-- 1 root root 29 04-22 21:02 sun.txt //注:这是sun.txt的属性;
[root@localhost ~]# ln sun.txt sun002.txt //注:我们通过ln 来创建sun.txt的硬链接文件sun002.txt
[root@localhost ~]# ls -li sun* //注:我们列一下sun.txt 和sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt
我们可以看到sun.txt在没有创建硬链接文件sun002.txt的时候,其链接个数是1(也就是-rw-r--r--后的那个数值),创建了硬链接 sun002.txt创建后,这个值变成了2。也就是说,我们每次为sun.txt创建一个新的硬链接文件后,其硬链接个数都会增加1。inode值也相同。
我们可以建立一个软链接看下:
[root@localhost ~]# ls -li linuxsir001.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
[root@localhost ~]# ln -s linuxsir001.txt linuxsir002.txt
[root@localhost ~]# ls -li linuxsir001.txt linuxsir002.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -< linuxsir001.txt
两个文件的节点不同;两者的硬链接个数相同都是1 ;我们还注意到了linuxsir002.txt 后面有一个标记 -<,这表示linuxsir002.txt 是linuxsir001.txt的软链接文件。