简单介绍Linux文件的软链接和硬链接

Linux文件的软链接和硬链接

本文用通俗化的语言介绍软硬链接的定义并举例说明在实际使用中它们的作用。

预备知识

首先我们要知道,在linux文件系统中,小部分区域用于保存文件的 inode (i 节点)信息;剩余的大部分用于保存 block 信息。

  • inode 用来记录文件的权限、文件的所有者和属组、文件的数据保存所在的 block 编号、文件的大小、等各类状态。每个文件需要占用一个
    inode。

  • block 用于实际的数据存储,如果一个 block 放不下数据,则可以占用多个 block。

我们通过文件名找到对应的inode,通过inode找到文件所存储的全部数据。
简单介绍Linux文件的软链接和硬链接

软链接

如果一个文件的数据块中存放的内容是另一文件的路径名的指向,那么这个文件可以认为是软连接。软链接有着自己的 inode 号以及用户数据块。软链接可以理解成windows的快捷方式,快捷方式的内容是实际文件的指向。

硬链接

硬链接是有着相同 inode 号仅文件名不同的文件。
试想这样一种情形,你有一个文件要放到10个不同的位置使用,如果你想要对文件进行修改,你必须在10个位置都进行修改,毫无疑问,这样既容易出现纰漏又劳累。如果将10个地方的文件设置成有相同inode号,也就是设置成硬链接。那么修改一个地方的文件就是修改所有地方的文件(相同inode号则是同一个文件内容)。
但是,使用软链接似乎也可以实现上述目标,但硬链接在某些时刻是不能被替代的,具体是什么时候我也不太清楚。

https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
http://c.biancheng.net/view/740.html