Linux学习笔记:文件的软硬链接

inode的引入

在一个电脑系统中,有数以万计的文件需要操作系统去管理,而各种各样的系统应用会调用无数个文件,那么操作系统是如何快速找到对应的文件呢?

因为磁盘存储的特殊性,每一个文件会拥有一个类似进程pcb的数据结构,被称为inode(索引节点),inode 主要负责存储文件的数据信息,并通过指针指向文件数据块的位置,以便文件系统能够定位到文件的实际内容。

inode(索引节点) 是一个数据结构,用来存储文件或目录的元数据信息,包括文件大小、权限、所有者、时间戳等。而文件的具体位置(即磁盘上的位置)是由文件系统通过 inode 中的指针来确定的。

inode 的特点包括:

  1. 唯一性:每个文件系统中的每个文件或目录都有一个唯一的 inode 号码,通过这个号码可以定位到文件或目录的元数据。
  2. 存储元数据:每个 inode 包含了文件或目录的元数据,如文件大小、所有者、权限、时间戳等信息,但不包括文件名。
  3. 高效的文件访问:文件系统通过 inode 来管理文件,这样即使文件名被修改或文件被移动,文件系统仍然可以通过 inode 来准确定位文件,从而提高了文件的访问效率。
  4. 硬链接的基础:硬链接是通过在文件系统中创建新的目录项来共享相同的 inode,从而实现文件的硬链接。
  5. 链接计数(重要!!!):inode中包含一个链接计数Links(link count),表示有多少个硬链接指向该inode。每当创建一个硬链接时,相应的inode的链接计数会增加。当删除一个硬链接时,链接计数会减少。当链接计数降至0时,文件系统知道可以释放该inode和它所指向的数据块。

具体包含的元数据信息:

  • 文件类型(regular file、directory、symbolic link 等)
  • 文件大小
  • 文件权限和所有者
  • 创建时间和修改时间
  • 指向文件数据块的指针等。

inode 在文件系统中的作用:

在文件系统中,每个文件或目录都有一个唯一的 inode 号码,通过这个号码文件系统可以快速定位到对应的元数据信息。当用户访问文件时,文件系统首先会根据文件名找到对应的 inode,然后再根据 inode 中的信息来读取文件数据或执行相应的操作。

总而言之,inode 是文件系统中用来存储文件或目录元数据的数据结构,它为文件系统的高效管理和访问提供了重要作用。

什么是软硬链接

软硬链接是Linux文件系统中一种在文件系统中创建文件引用的方法,从而实现文件或目录的共享与重用。

就像有一个文件你经常会打开,但是这个文件被存放在树状文件夹的最深处,想要快速找到这个文件非常的不方便,此时就可以创建一个软连接或者硬链接来达到快速访问的效果.(比如我们Windows桌面上的那些快捷方式文件)

软链接

什么是软链接

软链接,也称为符号链接,是一种特殊的文件类型,实际上它是一个指向原始文件或目录的文本指针。软链接包含的是目标文件的路径名,而不是文件本身的数据或inode(索引节点)信息。

软链接的特点

  • 软链接有自己的inode(因为软链接自己也是一个文件,只不过这个文件里面只是记录的原始文件或目录的路径而已)
  • 删除原始文件后,软链接将失效(源文件都没了有路径也没用啊)
  • 可以跨文件系统创建软链接。
  • 可以对目录创建软链接。

创建方式

要创建一个软连接,使用以下命令:

ln -s [源文件或目录路径] [软链接路径]

例如,创建一个软连接:
在这里插入图片描述

使用ls命令可以看到我创建的的软连接有区别于其他颜色的高亮显示
在这里插入图片描述
并且使用ll命令可以查看到当前目录下的软连接所指源文件的位置

软连接在实际开发中的作用?

  • 快捷访问:创建一个指向深层目录中文件的软链接,以便在另一个位置快速访问该文件。
  • 跨文件系统链接:在不同文件系统之间创建链接
  • 开发环境链接:开发人员可能希望将项目的某个配置文件软链接到本地配置文件,以便在不修改项目文件的情况下进行本地开发

硬链接

什么是硬链接

硬链接是文件系统中对文件inode的另一个引用,它与原始文件共享相同的inode。这意味着硬链接实际上指向文件数据本身,而不是路径名。

硬链接的特点

  • 硬链接与原始文件共享相同的inode和文件数据。
  • 删除原始文件不会影响硬链接,因为它们指向相同的数据。
  • 硬链接不能跨文件系统。
  • 不能对目录创建硬链接(除了特定的 “.” 和 “. .” 链接)。

创建方式

使用ln命令可以创建软硬链接

ln [源文件路径] [硬链接路径]

例如:创建一个硬链接
在这里插入图片描述
此时myHlink就是我为test.txt 所创建的硬链接

文件硬链接数量查看

因为硬链接本身实际上也是这个文件,因此每增加一个硬链接这个文件的链接数就+1
使用ll命令,在权限信息后面的数字就是硬链接数了即:Links
在这里插入图片描述
其中,myHlink 和 test.txt 是互为硬链接的,因此,删掉其中任何一个不影响另外一个问价的打开,仅仅只会让Links -1
在这里插入图片描述

硬连接在实际开发中的作用?

  • 备份重要文件:创建硬链接可以用来备份重要文件,因为硬链接不会占用额外空间,并且删除原始文件不会影响硬链接。
  • 节省磁盘空间:对于大量重复的文件(例如,在不同目录下的相同配置文件),可以创建硬链接来节省磁盘空间。
  • 目录结构中的文件共享:在文件系统中,如果有多个目录需要访问相同的文件,可以使用硬链接,而不是复制文件。

软硬链接的异同

相同点

  1. 关联文件:软链接和硬链接都可以用来创建文件或目录之间的关联。
  2. 快捷访问:它们都可以被看作是快捷方式,允许用户从一个位置快速访问另一个位置的资源。
  3. 文件属性:无论是软链接还是硬链接,它们的文件权限和所有权通常与原始文件相同。

不同点

  1. inode指向
  • 硬链接:硬链接指向原始文件的inode,它们实际上是与原始文件共享相同的inode。这意味着硬链接和原始文件实际上是文件系统中的同一个文件,只是有不同的文件名。
  • 软链接:软链接指向原始文件的路径,它有自己的inode。软链接包含的是指向原始文件的文本路径,而不是直接指向inode。
  1. 删除影响
  • 硬链接:删除原始文件不会影响硬链接,因为它们指向相同的inode和数据块。只有当所有的硬链接都被删除时,文件的数据才会被文件系统删除。
  • 软链接:如果原始文件被删除或移动,软链接将失效,因为它指向的是一个特定的路径,而不是实际的inode。
  1. 跨文件系统
  • 硬链接:硬链接不能跨文件系统创建,因为它们必须在相同的文件系统内共享inode。
  • 软链接:软链接可以跨文件系统创建,因为它们只存储了指向原始文件的路径。
  1. 文件类型
  • 硬链接:不能为目录创建硬链接,因为这可能会导致文件系统的混乱,如循环链接。
  • 软链接:可以为目录创建软链接,这对于创建快捷方式非常有用。
  1. 文件大小
  • 硬链接:硬链接和原始文件大小相同,因为它们实际上指向相同的数据块。
  • 软链接:软链接的大小通常比原始文件小,因为它只包含了指向原始文件的路径字符串。
  1. 显示命令
  • 硬链接:使用ls -l命令时,硬链接显示的文件大小和原始文件相同。
  • 软链接:使用ls -l命令时,软链接的文件大小是链接文件的大小,不是原始文件的大小,并且在文件权限的左侧会有一个l标志表示这是一个链接。
  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值