您的位置:首页 > 运维架构 > Linux

linux的符号链接

2010-03-29 16:47 218 查看
ln:该命令在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题。如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。
格式: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的软链接文件。







本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangdeng1314/archive/2009/06/10/4254132.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: