ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux下的软链接和硬链接,文件拷贝的区别

Linux下的软链接和硬链接,文件拷贝的区别

原创 Linux操作系统 作者:tolywang 时间:2009-05-04 15:27:52 0 删除 编辑

总结如下:

硬链接:在磁盘上有一份内容一样的文件产生,但不改变文件的Inode,也就是与原文件共用Inode,

软链接:不在磁盘上有一份内容一样的文件产生(),但产生新的Inode,

文件复制:产生新的文件内容,并且使用新的Inode.

简单的说软链接相当于快捷方式。

-----------------------------------------------------------------------------------------------------------------------  

 

符号链接 

存在两种不同类型的链接,软链接和硬链接。修改其中一个,硬连接指向的是节点(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 


发现,httpd2.conf实际已经不存在了,是断链,而httpd1.conf变也了普通文件

----------------------------------------------------------------------------------  

主要区别如下:
1.硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向原文件的指针,它们是两个文件。
2.硬链接只能用于文件,不能用于目录;软链接可以为目录建链接。
3.硬链接不能跨文件系统操作。

 

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

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13340374