Skip to main content

基础

我们知道任何文件都有文件名与文件内容两个属性,这在Linux操作系统里面被分成两个部分:用户数据(user data)与元数据(mete data)。

  • 用户数据,及文件数据块,记录文件真实内容的地方;
  • 元数据,则是文件的附加属性,如文件大小,创建时间,所有者等信息。

在Linux中,元数据中的inode号(inode是文件元数据的一部分,但其并不包含文件名,inode号即为索引节点号)才是文件的唯一标识而非文件名,文件名仅仅只是为了方便人们的记忆和使用,系统或程序通过inode号寻找正确的文件数据块。

为了解决文件的共享使用,Linux系统引入了两种链接:硬链接(hard link)与软连接(soft link&symbolic link)。链接为Linux系统解决了文件的共享使用,还具有隐藏文件路径,增加权限安全及节省存储等好处

硬链接

  • 若一个inode号对应多个文件名,则称这些文件互为硬链接。即同一个文件使用了多个别名
  • 创建硬链接的命令为linklnln a.c a_ylj.c

特点

  • 文件有相同的inodedata block
  • 只能对已存在的文件创建硬链接
  • 不能对目录创建硬链接
  • 更改一个文件,与其互为硬链接的文件都会被改变(一改全改)
  • 删除一个硬链接文件并不影响其他互为硬链接的文件

软链接

软链接与硬链接不同,软连接的内容是另一个文件的路径名,比较典型的是windows下的快捷方式。创建软链接的命令:ln -s fileold filenew

特点

  • 软链接有自己的inode节点
  • 可创建对文件或目录的软链接
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软链接被称为死链接(dangling link),若被指向路径文件被重新创建,死链接可恢复为正常的软链接