硬链结和符号链接的区别

来源:互联网 发布:南宁超图软件 编辑:程序博客网 时间:2024/04/29 19:53
原贴:http://blog.chinaunix.net/u1/35675/showart_331958.html 硬链结和符号链接的区别    
硬连接记录的是目标的 inode,符号连接记录的是目标的 path。 软连接就像是快捷方式,而硬连接就像是备份!符号连接可以做跨分区的 link;而 硬连接由于 inode 的缘故,只能在本分区中做 link.所以,符号连接的使用频率要高的多。存在两种不同类型的链接,软链接和硬链接。修改其中一个,硬连接指向的是节点(inode),而软连接指向的是路径(path)  软链接文件    软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。和win下的快捷方式差不多。链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。  命令格式:  代码:  ln [-s] source_path target_path  硬链接文件    info ln 命令告诉您,硬链接是已存在文件的另一个名字,硬连接的命令是  代码:  ln -d existfile newfile  引用:  硬链接文件有两个限制    1、不允许给目录创建硬链接;    2、只有在同一文件系统中的文件之间才能创建链接。    对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。修改其中一个,与其连接的文件同时被修改  代码:  $umask 022  $ cp /etc/httpd/conf/httpd.conf /usr/sam  原来前面做的试验,改变了系统默认的umask值,现在改回来为022,  举个httpd.conf文件做例 子  代码:  $ ln httpd.conf httpd1.conf  $ ln -s httpd.conf httpd2.conf  第一条为硬链接,第二条为软链接  代码:  $ ls -li  代码:  总用量 80  1077669   -rw-r--r--    2 sam      adm         34890 10月 31 00:57 httpd1.conf  1077668  lrwxrwxrwx    1 sam      adm            10 10月 31 00:58 httpd2.conf ->; httpd.conf  1077669  -rw-r--r--    2 sam      adm         34890 10月 31 00:57 httpd.conf  可以看到,使用ls -li,软连接只产生了10字节的快捷而已,硬连接却实实在在的的拷贝。最前面的inode硬链接和源文件是一样的,而软链接不一样,具体看一下回复  对http1.conf进行编辑,可以发现httpd.conf也发生了一样的变化  代码:  $ rm httpd.conf  现在删除链接的源文件,来比较不同之处  代码:  $ ls -l  总用量 44  drw-r--r--    2 sam      adm          4096 10月 30 20:14 file6  -rw-r--r--    1 sam      adm         34890 10月 31 00:57 httpd1.conf  lrwxrwxrwx    1 sam      adm            10 10月 31 00:58 httpd2.conf ->; httpd.conf 我的结论就是:硬链结只有全部被删除的时候,文件才无法访问,但是软链接,只要他的源文件消失了,这个文件就无法访问了。软链接就是记录了文件路径的一种特殊文件。