Answers:
硬链接基本上是同一文件的第二个文件名。因此,如果您对文件进行硬链接,则该文件在文件系统上将只有一次,因此仅占用空间一次。因此,如果您想节省磁盘空间,则想使用它
在UNIX文件系统上,每个文件名实际上都是到磁盘上数据位置的硬链接,称为索引节点。如果创建到现有文件的新硬链接,则磁盘上不会再占用额外的空间,因为它只是指向相同数据的另一个指针。如果通过一个或其他链接编辑数据(或直接编辑inode),则两个文件都会更改。
系统会统计每个索引节点有多少个硬链接。当链接计数为0时,将无法再访问该文件,并且该数据被标记为可以覆盖的安全。因此,给定一个具有2个硬链接的文件,如果删除其中一个链接,则不会删除数据。只有同时删除两者,数据才会消失。
您可以使用-i
切换到ls
命令的方式查看文件的inode数量。
另一方面,软链接通过文件名指向另一个文件。如果移动或删除原始文件,则链接将断开。
关于问题的一部分,“为什么我要完全使用硬链接?”:
硬链接文件(或与此相关的软(符号)链接文件)提供了一种有用的方式,使单个可执行文件可以伪装成不同的用途。
即,可以检查调用代码的名称,以确定哪些选项可用于执行。这样就可以开发和打包一大段代码,并具有略有不同的目的所需的所有共享功能。从用户的角度来看,要运行的“名称”(按名称)的说明将选择和表示形式限制为更易于管理的选项子集。
一个典型的例子是LVM。有一段时间的HP-UX用于各种可执行文件的硬链接的文件(如vgdisplay
,vgcreate
,vgextend
,等。如今,像Linux一样,这些命令实际上是象征性的(软)链接到lvm
可执行文件。