一直没有深入了解过链接这块的知识,昨晚有个朋友问我这问题,一下子激发了我的兴趣。今天早上过来看了看鸟哥的书然后在stackoverflow上找了一番,感觉自己现在的理解到位了,起码这样理解容易记忆。先来做个实验,在我们的用户目录下,建立一个测试文件夹,然后新建一个文件,并创建这个文件的软链接和硬链接。如下:
vim file1 #新建文件ln -s file1 file1.soft #软链接ln file1 file1.hard #硬链接
紧接着,我偶们看下这三个文件的具体信息:
我们发现软链接的文件属性是l,而硬链接和文件一样,都是-,并且软链接的文件比较小,而硬链接文件大小和原文件一样。紧接着,我们修改下file1文件,然后接着看文件信息:
我们发现,修改完file1后,file1.hard的修改时间也同步发生变化,但是file1.soft的文件时间信息没有发生变化。我们再修改下file1.soft文件,然后查看文件信息,同样发现file1和file1.hard文件的时间信息发生了改变,而file1.soft文件时间信息仍然没有改变。道理先不讲,继续来。
Linux童鞋他只认识数字,其他的啥都不懂,所以在使用Linux的时候,我们很多地方都对应一个数字,比如进程号、权限值等等,文件在Linux中同样也是通过数字来标识的,这个数字就叫文件的索引节点(inode),每个文件都有一个唯一的索引节点。我们可以通过“ls -i”来查看文件的inode节点信息,如下:
我们惊奇的发现file1和file1.hard的inode节点值是一样的,这个时候不知道你是不是恍然大悟,因为他们的inode值一样,那Linux在更新文件的时候会根据inode去找到相应的文件然后更新,而每次更新都会找到两个文件。
最后来一句话总结软链接和硬链接:
软链接:相当于快捷方式,可以为所有文件建立软链接。
硬链接:相当于给文件起了个别名,链接文件和源文件其实是同一个文件。不能用于目录。
参考文档: