ln 软链接与硬链接

原文地址:http://www.dutor.net/index.php/2010/07/symbol-hard-links/

  Linux/Unix中有两种链接,硬链接和软链接,均由ln命令来创建。

ln -s /home/m/.vimrc /media/Elements/115/vimrc

软链接

  软链接使用ln命令的-s选项创建:

1
ln -s source filename #创建source文件的软链接target(目的地址)

  软链接类似于Windows中的快捷方式,内部保存的是源文件的路径,路径可以是相对路径,也可以是绝对路径:

1
2
3
4
5
6
dutor@dutor-desktop:~$ ln -s gvim.tgz gvim
dutor@dutor-desktop:~$ ln -s /home/dutor/gvim.tgz gvim2
dutor@dutor-desktop:~$ ll gvim* # alias ll='ls -l'
lrwxrwxrwx 1 dutor dutor    8 2010-07-01 20:32 gvim -> gvim.tgz
lrwxrwxrwx 1 dutor dutor   20 2010-07-01 20:33 gvim2 -> /home/dutor/gvim.tgz
-rw-r--r-- 1 dutor dutor 8.5M 2010-06-29 23:06 gvim.tgz

  软链接应用十分广泛。
  在文件系统中多处共享同一个较大文件时,使用软链接就可以避免创建多个副本。
  维护动态库文件的版本时,使用软链接,在升级库文件后,只需修改软链接的源文件,而使用该库的程序则不需要修改。

硬链接

  不带有任何选项的ln命令即可创建硬链接:

1
ln source target #创建source文件的硬链接target

  硬链接创建后,链接文件与源文件没有主次之分,文件系统中它们都和同一个inode相关联,即具有相同的inode号:

1
2
3
4
dutor@dutor-desktop:~$ ln gvim.tgz gvim
dutor@dutor-desktop:~$ ll -i gvim*
1048032 -rw-r--r-- 2 dutor dutor 8.5M 2010-06-29 23:06 gvim # 第3个域代表该文件的链接数
1048032 -rw-r--r-- 2 dutor dutor 8.5M 2010-06-29 23:06 gvim.tgz

  因此,系统不允许用户为目录创建硬件链接,否则,目录树就不再是有向无环的了。只许州官放火,不许百姓点灯,系统却可以为目录“创建”硬链接(系统知道自己在做什么,却不知用户会做什么),那就是.和..分别指向当前目录和上级目录。因此每个目录的链接数至少是2.

  另外,由于硬链接的实现依赖于特定的文件系统,因此不可以跨文件系统。而软链接是基于路径的,所以只要是挂载在系统目录树中的文件或目录,都可以创建软链接。

posted @ 2011-08-05 18:18  wangkangluo1  阅读(12638)  评论(0编辑  收藏  举报