UNIX系统提供了一种采用不同文件名来访问同一数据或程序,即把同一个数据或赋予不同的文件名,这种文件叫做链接文件,也称为硬链接。
采用硬链接的好处是只需載文件系统中保存一份数据或程序副本,多个文件名就可以共享数据如果更新任何一个文件,即可反映到其他文件中。这样不但节省了磁盘空间,也保证了数据的一致性以及文件存储位置的灵活行。
可以通过ln或link()系统调用创建硬链接。创建硬链接文件时,文件列用的是同一信息节点号和文件数据,也就是说硬链接没有生成一个新的文件。她只是載同一目录或不同目录中生成一个新的文件名而已。当删除原始文件后,并不影响其他链接文件的使用。硬连接的链接文件必须位于同一个物理文件系统中。
***@wuyaalan:~$ ln fork forkx
***@wuyaalan:~$ ls -l fork*
-rwxr-xr-x 2 *** ***7354 2011-10-14 09:02 fork
-rw-r--r-- 1 *** ***453 2011-10-10 18:36 fork1.c
-rw-r--r-- 1 *** ***460 2011-10-14 09:02 fork.c
-rwxr-xr-x 2 *** ***7354 2011-10-14 09:02 forkx
以上对fork建立了一个硬链接,可以看出其inode与块容量没有改变。
既然上面的硬链接文件存在缺陷,那么就引进了符号链接文件,她可以是用户可以跨越不同的物理文件建立链接。实现方式是ln -s或symlink()系统调用实现。
与硬链接的实现方式不同的是,符号链接文件本身就是一种数据文件,只不过数据内容是指向一个文件的路径,很像windows里面的快捷方式。由此看出,符号链接文件不但创建了文件名,还有自己的inode节点号及自己的块数据。
当引用符号链接文件时,系统首先打开符号链接文件,然后根据文件的内容,找到其指向的文件。在这里如果删除了原始文件,那么你就悲剧了。
当然后面还有个管道文件,前面讲过就罗嗦了!
阅读(3592) | 评论(0) | 转发(0) |