linux中的软/硬链接可以使同一个文件具有多个不同的访问路径,比如将某个可执行程序链接到/bin目录下,这样不用修改PATH也可以执行该命令了。
硬链接就是是链在inode上,inode是文件的索引节点,除了存储文件数据块(data block)外,还会存储文件的一些属性信息,比如权限、类型等,所以链在inode上就可以找到原始文件了。索引节点、数据块和超级块是linux文件系统EXT2/3/4的基本组织结构,对硬盘的格式化就是为了格式化出这些东西,试想,如果一个文件数据直接写到硬盘的多个扇区(最小存储单位,512个字节)上,那不但写完之后找不到,而且文件对应的属性信息也无法存储,所以硬盘在使用之前都必须进行格式化,另外,格式化之后的数据块不是扇区,而是多个扇区的集合(2的n次方),所谓的分区也是柱面的集合,而不是扇面的集合。除文件之外,还有目录,目录也有inode和datablock,他的datablock中存的就是文件名与inode的对应表,硬链接就是该对应表中增加一项新的文件名与原始文件inode的对应关系。
软链接相当于快捷方式,链到原始文件上,软链接会新增加一个文件,该文件也有inode和datablock,只不过它的datablock中存的是原始文件的文件名和路径。
原始文件删了,软链接就失效了,硬链接不存在原始文件这一说了,所有的链在当前文件上的硬链接都删了,该文件才会在硬盘上被清除。