Linux中的软链接与硬链接

Linux中的软链接与硬链接

  • 一、inode的概念
  • 二、软链接
  • 三、硬链接
    • 硬链接的两个限制
  • 四、软链接与硬链接的区别

一、inode的概念

此部分参考:https://blog.csdn.net/ML908/article/details/103374494

1、一个文件的数据包括元信息和实际数据,元信息包括以下内容:

  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳等

2、这些元信息保存在inode(索引节点)中,每个文件都必须占用一个inode,每个inode都有一个号码,在Linux系统内部不适用文件名,会使用inode号码来识别文件
3、目录文件的结构:
目录也是一种文件,创建一个空的目录就是创建一个内容为0的文件,每一行称为一个目录项
Linux中的软链接与硬链接_第1张图片
4、Linux系统文件三个主要的时间属性

ctime(change time) 最后一次改变文件或目录(属性)的时间
atime(access time) 最后一次访问文件或目录的时间
mtime(modify time) 最后一次修改文件或目录(内容)的时间

5、查看inode号码

ls -i file  ##显示文件的inode号码
stat file  ##显示文件的元信息,从中获取inode号码

Linux中的软链接与硬链接_第2张图片6、inode的作用:
(1)当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
(2)移动或重命名文件时,只改变文件名,不影响inode号码
(3)打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
7、使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
Linux中的软链接与硬链接_第3张图片8、访问文件的简单流程
Linux中的软链接与硬链接_第4张图片

二、软链接

软链接相当于源文件的一个快捷方式,存放源文件的路径指向,有自己的 inode 号以及用户数据块。

ln -s 源文件 目标文件位置
  • 软链接有自己的文件属性及权限等,可对不存在的文件或目录创建软链接。
  • 软链接可以指向目录,而且软链接所指向的目录可以位于不同的文件系统中。

Linux中的软链接与硬链接_第5张图片

  • 当原始文件被删除后,链接文件也将失效。
  • 在删除源文件后,向软链接里写入内容,源文件会恢复,并包含与软链接相同的内容。

Linux中的软链接与硬链接_第6张图片

三、硬链接

硬链接文件本质上与源文件其实是同一个文件,相当于以文件副本的形式存在,但不占用实际空间。

ln 源文件 目标文件位置
  • 每添加一个硬链接,该文件的inode链接数就会增加1;而且只有当该文件的inode链接数为0时,才算彻底将它删除。
  • 硬链接实际上是指向原文件的inode的指针,所以硬链接的文件属性及权限等和源文件均一致。

Linux中的软链接与硬链接_第7张图片

  • 链接数示意(链路数为2)
    Linux中的软链接与硬链接_第8张图片
  • 当无论修改硬链接或者源文件的内容,另外一个都会同步更新
  • 删除源文件后,硬链接仍旧可用

Linux中的软链接与硬链接_第9张图片

硬链接的两个限制

  • 只能对已存在的文件进行创建,不能对目录进行创建

由于硬链接是同步更新的,所以引入了对目录的硬链接就有可能在目录中引入循环,在目录遍历的时候系统就会陷入无限循环当中,这样导致无法定位到访问目录

  • 硬链接不能跨文件系统创建

不同的文件系统的文件管理方式不同,甚至有些文件系统不是索引文件系统,并不一定两个文件系统的inode有相同的含义。即使有相同inode含义,硬链接的几个文件,具有相同的inode号码,不同文件系统中,也可能有使用该inode号码的文件,也会产生矛盾。

四、软链接与硬链接的区别

软链接 硬链接
本质上 不同的文件(快捷方式) 同一文件(副本)
inode号码 不同 相同
目录 支持对目录创建 不支持对目录创建
文件系统 支持跨文件系统 不支持跨文件系统
文件类型 L(symbolic link) 与源文件一致
相互关系 删除源文件,链接失效 删除源文件,链接不受影响
生成命令 ln -s ln

你可能感兴趣的:(常用知识点,linux,运维,硬链接,软链接)