Linux中的软链接与硬链接

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

一、inode的概念

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

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

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

2、这些元信息保存在inode(索引节点)中,每个文件都必须占用一个inode,每个inode都有一个号码,在Linux系统内部不适用文件名,会使用inode号码来识别文件
3、目录文件的结构:
目录也是一种文件,创建一个空的目录就是创建一个内容为0的文件,每一行称为一个目录项

4、Linux系统文件三个主要的时间属性

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

5、查看inode号码

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

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

二、软链接

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

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

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

三、硬链接

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

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

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

硬链接的两个限制

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

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

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

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

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

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

Linux中的软链接与硬链接相关推荐

  1. Linux系统:软链接与硬链接的原理分析

    1.相关概念 1.索引节点inode(index node):inode就是索引节点,它用来存放档案及目录的基本信息,包含时间.档名.使用者及群组等. inode 是 UNIX/Linux 操作系统中 ...

  2. Linux文件的软链接和硬链接

    1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. 1.1索引节点 索引节点是指 ...

  3. linux命令创建硬链接,Linux中的ln命令:创建软链接和硬链接

    软链接是Linux文件系统的基本组成部分之一.在本教程分享了如何使用ln命令创建软链接和硬链接. 链接是对另一个文件的引用.链接为同一个文件赋予多个名称,并允许它们同时存在于两个或多个位置. 链接有两 ...

  4. linux给文件添加链接,Linux给文件或目录创建软链接或硬链接的方法

    有时linux用户们为了使用方便,会想给电脑中的文件或目录创建软链接或硬链接.不过有些用户不清楚该怎么给这些文件或目录创建软链接或硬链接该怎么办呢?别急,现在小编就来教你解决的方法. 解决方法: 当我 ...

  5. linux创建文件软链接命令,Linux创建文件或目录软链接、硬链接的技巧

    有时Linux用户们为了使用方便,会想给电脑中的文件或目录创建软链接或硬链接.不过有些用户不清楚该怎么给这些文件或目录创建软链接或硬链接该怎么办呢?别急,现在小编就来教你解决的方法. 解决方法: 当我 ...

  6. 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)

    一.Linux系统的文件存储结构 在Linux系统中,对计算机中的数据和硬件资源进行管理都是以文件的形式,目录.字符设备.套接字.硬盘.光驱.打印机等都被抽象成文件形式("Linux系统一切 ...

  7. linux命令--ln软连接,硬链接

    ln:英文名link,链接的意思. Linux 系统中有软链接和硬链接两种特殊的"文件". 硬链接特征: 1) 硬链接文件跟源文件拥有相同的i(inode)节点和存储block块, ...

  8. Q45:软链接和硬链接

    软链接和硬链接 为了解决文件共享问题,Linux引入了软链接和硬链接. 除了为Linux解决文件共享使用,还带来了隐藏文件路径.增加权限安全及节省存储等好处. 硬链接 如果一个inode号对应多个文件 ...

  9. linux 软链接_Linux 中软链接和硬链接的区别 | Linux 中国

    链接(Link)是一种快捷访问机制,它通过一个文件指向原始文件或目录的方式实现快捷访问,同时还记录了原始文件或目录的一些信息.https://linux.cn/article-12270-1.html ...

最新文章

  1. 零起点学算法22——华氏摄氏温度转换
  2. 算法分析与设计——分治法最近点对
  3. jar 反编译_Java加密jar包流程
  4. 单片机检测stc没反应_我为什么不用STC单片机
  5. Linux虚拟化KVM-Qemu分析(八)之virtio初探
  6. UVA11150 Cola【数学】
  7. Spring 注解 @Controller,@Service,@Repository,@Component,重定向 与 服务端跳转
  8. 二维vector初始化,赋值
  9. 开发历程:网页视频流媒体播放器EasyPlayer.JS开发web H5网页播放H.265视频支持FLV与HLS直播与点播
  10. ios 渐变透明背景_2019 - 渐变梯度
  11. C#模拟鼠标和键盘操作
  12. 【斯坦福大学公开课CS224W——图机器学习】六、图神经网络1:GNN模型
  13. LuoguP4234_最小差值生成树_LCT
  14. mysql 脱裤_mysql 脱裤(脱库)通用脚本 | 学步园
  15. div点击穿透,CSS属性pointer-events :none;实现护眼模式, 夜间模式遮罩
  16. 毕业旅行 | 用一场纽约5日游告别难忘青葱岁月
  17. 第三方登录-[微博、微信、qq] java实现
  18. JAVA MemCache 史无前例的详细讲解!看完包精通MEMCACHE!
  19. CASS地物及地貌的诠释
  20. html转m3u8地址,[转]m3u8直播测试地址

热门文章

  1. python爬虫(常见爬取失败问题)
  2. win10查看g++/gcc版本
  3. 输入框超链接_微信内测新功能,聊天输入框的关键词前加#变身搜一搜的超链接...
  4. sql语句创建表时的注意事项
  5. 【Linux基础】Linux环境变量(超详细)
  6. 不会安装该公布程序,因为它可能不安全,请与管理员联系,将程序包的安装用户界面选项更改为基本
  7. 抢跑前装量产赛道,这家自动驾驶公司为何要自研域控制器?
  8. 使用3DEXPERIENCE云平台建模《冰雪奇缘》雪宝
  9. Redis主从复制的讲解
  10. 企业补丁管理-windows/Mac/Linux打补丁