软链接与硬链接的区别

软链接相当于Windows中的快捷方式。软链接就是一个指向另一个文件的文件。当你创建一个软链接的时候,你创建的是一个新文件,OS为软链接分配inode,而该文件存在的意义只是一个指向系统某处的另一个文件的快捷方式。

硬链接是是磁盘上某个位置的引用(或者更准确的说,文件系统中的某个位置),或者说硬链接是一个指针,指向文件索引节点,系统并不为它重新分配inode。

删除硬链接的时候,不会直接删除文件,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。

删除软链接的时候,则根本不会影响原来的文件。删除了源文件,则软连接也就无效了。

如何选择使用软链接还是硬链接:
1. 性能
使用硬链接可以得到少量的性能提升。这是由于硬链接是一个磁盘位置的引用而不是一个指向另一个文件的文件(指向你所需要的真实磁盘位置),硬链接所涉及到的磁盘寻道动作要少一次。

2. 存储空间
硬链接不占用额外的空间,因为它只是一个简单的指向已有磁盘空间的引用。而创建软链接是创建一个新文件,会消耗掉你文件系统上的少量空间(通常是4KB)。

另外,硬链接更好的一个原因是软链接很容易丢失一个文件的‘主’实例(所有软链接指向的那个文件)。如果原始文件删除了,那么所有的软链接都将变成无效的。而使用硬链接的话,你可以删除任意一个实例,包括原始实例。只要还有一个实例存在,该文件就存在于系统中。

软链接和硬链接的4点不同 :
(1)软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 。ln aa.txt /root/bb 失败 。
(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个Inode,会把结点连接数增加。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.
(3)软连接可以对一个不存在的文件名进行连接 。
(4)软连接可以对目录进行连接。

猜你喜欢

转载自javavsnet.iteye.com/blog/999006