硬链接和软链接起的都是将一个文件放在其它地方使用的作用,都是给一个文件起了其它的名字,然后就可以用其它名字来使用它。
这种技术也使得我们可以在不修改脚本的情况下,在脚本中操作不同的文件,这只要在脚本中使用硬链接或软链接,如果要操作不同的文件,用ln命令使它们指向不同的文件就行了,脚本文件本身不需要修改。
那么,硬链接和软链接在使用上有什么区别吗?
首先,软链接使用范围更广,因为,软链接可以指向目录,而硬链接不能。软链接的指向可以跨磁盘分区,硬链接不能。
来看一个例子。
这个例子中,1是原文件,目录中另外两个文件它的硬链接hard1和软链接soft1。
命令ls -li以长格式显示目录中的文件,并且显示每个文件的inode。cat用于显示文本文件的内容,这是显示文本文件内容的另一个命令(前面我们已经介绍了less命令)。可以看到,三个文件内容完全一样。但更重要的是,可以看出,1和hard1的inode号完全一样,而soft1的就不同。
101409288是文件1的inode号,这个号码同时也是hard1的inode号。因此它们指向同一个物理地址。
101409286是soft1的inode号,可见它与文件1和hard1的inode号不同。101409286指向的是soft1的内容,因为它是一个软链接,所以这个内容只是一个指针,这个指针指向文件1的物理地址。
再看文件内容的大小,1和hard1是66,它们当然是完全一样的,而soft1是1,因为它的内容只是一个指针,而另外两个是文件的实际内容:
i am a worker.
you are a peasant.
she is a soldier.
study hard.
第三项数据是硬链接的数目。我们可以看到1和hard1都是2,而soft1的是1。如果一个文件这个数目是1的话,再删除,这个文件就彻底从文件系统中消失了。如果大于1,删除之后,这个文件还有拷贝在文件系统中。
如果一个文件被删除,那么,指向它的软链接就失效了。这是因为,软链接并不存放实际内容,只是存放一个指针。但如果我们删除一个文件,它的硬链接完全不受影响,因为,它的任何硬链接与它的地位完全一样,都保有同样的inode号。系统发现硬链接数目大于1的话,删除文件并不会删除文件的实际内容。
网友评论