ITPub博客

首页 > Linux操作系统 > Linux操作系统 > linux 下的连接类型

linux 下的连接类型

原创 Linux操作系统 作者:pingley 时间:2012-03-30 16:19:52 0 删除 编辑
linux 下的连接类型
符号连接(symbolic link)
符号连接的本质是创建一个新的文件,当系统内核遇到一个符号连接的时候,会根据符号连接
文件中inode 提供的文件名,再次进行路径解析。因为符号连接没有参照目标文件的inode,
所以符号连接可以跨越文件系统,并且指向任何的文件,甚至是不存在的文件。因为符号连接
的限制比硬连接少所以用的比较多。但是不管是硬连接还是软连接都应该在需要的时候才去
创建。对于符号连接,因为是以文件的形式存在,所以需要消耗磁盘空间(给文件分配inode,block).
另外使用符号连接会增加内核将文件名(路径名)转换成inode 的开销。因为使用符号连接需要
进行两次路径解析才能最终确定目标文件的inode。
连接文件的创建的语法格式:
ln -s {target-filename} {symbolic-filename}
-s 表示symbolic link.
[oracle@zeng ~]$ ln -s  /opt/oracle11g/admin ora_admin
[oracle@zeng ~]$ ll -i ora_admin
810434 lrwxrwxrwx. 1 oracle oinstall 20 Mar 30 15:29 ora_admin -> /opt/oracle11g/admin
[oracle@zeng ~]$ cd ora_admin/
[oracle@zeng ora_admin]$ pwd
因为我比较经常的进入/opt/oracle11g/admin 目录,所以我会之创建一个连接文件。这样我就
可以更加方便的进入目标目录了。另外我们可以很清楚的看到连接文件连接到那个目标文件。
删除符号连接不会删除目标文件。
[oracle@zeng ~]$ rm ora_admin
[oracle@zeng ~]$ cd /opt/oracle11g/admin
[oracle@zeng admin]$ pwd
先创建两个空文件用以测试。
[oracle@zeng ~]$ touch linkfile1
[oracle@zeng ~]$ ln -s linkfile1 linkfile2
inode 都是1 也就是说linkfile2 是没有参照linkfile1 的inode 的。
[oracle@zeng ~]$ ll -i linkfile*
810434 -rw-r--r--. 1 oracle oinstall 0 Mar 30 15:37 linkfile1
810671 lrwxrwxrwx. 1 oracle oinstall 9 Mar 30 15:37 linkfile2 -> linkfile1
当删除目标文件以后,linkfile2 指向目标文件是会亮警告色的(闪动的红色)。
[oracle@zeng ~]$ rm linkfile1
[oracle@zeng ~]$ ll -i linkfile*
810671 lrwxrwxrwx. 1 oracle oinstall 9 Mar 30 15:37 linkfile2 -> linkfile1
硬连接(hard link)
硬连接的本质是创建一个目录项指向存放实际文件信息的inode。也就是说多个文件同时指向
一个inode。当对目标文件创建了硬连接以后,inode 目标文件与硬连接文件中的inode 数都
将加1.删除硬连接inode 计数将会减1.因为硬连接文件是参照目标文件的inode 的,所有不能
跨越文件系统创建硬连接文件。不过硬连接文件比符号连接读写的时候要高效。硬连接一般是
不会引入存储开销的,因为他只是一个目录项而已。
硬连接创建语法格式:
ln  {target-filename} {symbolic-filename}
注:不能创建目录的硬连接。
先来查看下为创建硬连接前目标文件的inode 计数。
[oracle@zeng ~]$ ll -i /opt/oracle11g/diag/rdbms/oracl/oracl/trace/alert_oracl.log  
544202 -rw-r-----. 1 oracle oinstall 43647 Mar 30 13:24 /opt/oracle11g/diag/rdbms/oracl/oracl/trace/alert_oracl.log
[oracle@zeng ~]$ ln /opt/oracle11g/diag/rdbms/oracl/oracl/trace/alert_oracl.log  /home/oracle/oracle_alert.log
查看创建完硬连接以后目标文件与硬连接文件的inode 计数。
[oracle@zeng ~]$ ll -i /opt/oracle11g/diag/rdbms/oracl/oracl/trace/alert_oracl.log  /home/oracle/oracle_alert.log
544202 -rw-r-----. 2 oracle oinstall 43647 Mar 30 13:24 /home/oracle/oracle_alert.log
544202 -rw-r-----. 2 oracle oinstall 43647 Mar 30 13:24 /opt/oracle11g/diag/rdbms/oracl/oracl/trace/alert_oracl.log
另外硬连接更加的安全因为将目标文件删除与硬连接文件其中之一删除,文件实际上还是存在的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-719939/,如需转载,请注明出处,否则将追究法律责任。

上一篇: linux swap(交换)
下一篇: ORA-01790 错误处理
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    169
  • 访问量
    715354