linux链接文件、硬链接与软链接

一、linux文件管理特性

linux的文件都有文件名和数据。

数据被分成2部分:用户数据(user data)与元数据(metadata)。

用户数据:即文件数据块(data block),数据块是记录文件真实内容的地方。

元数据:文件的附加属性,如文件大小、创建时间、所有者等信息。

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

linux链接文件、硬链接与软链接_第1张图片

二、为什么会有链接文件

为解决文件的共享使用,Linux 系统引入了链接,链接为Linux 系统解决了文件的共享使用,还带来了隐藏文件路径增加权限安全节省存储等好处。

创建链接文件可以给文件和目录创建替代名或别名。


三、链接文件的分类

linux链接文件、硬链接与软链接_第2张图片
  • 硬链接 (hard link)

    ln source_file target_file
    ln -P source_file target_file
    // 建立硬链接
    
  • 软链接(soft link;又称符号链接,即symbolic link)

    ln -s source_file target_file
    // -s:建立软链接
    

四、硬链接

若一个 inode 号对应多个文件名,则称这些文件为硬链接。
换言之 ,硬链接就是同一个文件使用了多个别名。

当有多个硬链接文件时,删除其中一个则是删除了一个文件名而已,硬链接数会少1个。

硬链接具有以下几点特性:

  • 文件有相同的inode及data block,仅文件名不同
  • 只能对已存在的文件进行创建
  • 不能交叉文件系统进行硬链接的创建,只能在同一个文件系统来链接文件
  • 不能对目录进行创建,只能对文件创建
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件
linux链接文件、硬链接与软链接_第3张图片

五、软链接

若文件用户数据块中存放的内容是另一文件的路径名的指向(像windows中的快捷方式一样),则该文件就是软链接。

软链接就是一个普通文件,它有自己的文件属性及权限等。

软链接具有以下几点特性:

  • 软链接有着自己的 inode 号以及用户数据块(data block)
  • 可对文件或目录进行创建
  • 也可对不存在的文件或目录进行创建
  • 可交叉文件系统进行创建,可在不同的文件系统来链接文件
  • 创建软链接时,链接计数不会增加
  • 建立了软链接后,软链接文件的大小是指向的目标文件的文件名的大小。
linux链接文件、硬链接与软链接_第4张图片
建立了软连接后,软连接文件的大小是指向的目标文件的文件名的大小
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link);若被指向路径文件被重新创建,死链接可恢复为正常的软链接。
linux链接文件、硬链接与软链接_第5张图片
死链接与正常的软链接

你可能感兴趣的:(linux链接文件、硬链接与软链接)