文件由何决定?

首先需要说明linux的文件的概念,我们如何分辨两个在linux里边的文件(以下简称文件)是不同的文件?由此就不得不说到一个东西,inode。

根据维基的定义:

inode是指在许多“类Unix文件系统”中的一种数据结构。每个inode保存了文件系统中的一个文件系统对象(包括文件、目录、设备文件、socket、管道, 等等)的元信息数据,但不包括数据内容或者文件名。

注意,这里说明了,不包括文件名。也就是说inode可以用来找到文件的一些信息,而文件名是没有在其中的。

linux也是一个典型的类unix系统,也使用了inode这个数据结构,而inode,则是linux中可以用来判断两个文件是否一样的标志了。

硬链接

由于文件名和inode不是一一对应的,加之我们一般使用文件是通过文件名而不是通过手动指定inode,所以就出现了硬链接的概念。
硬链接就是将文件名和inode对应起来,建立一个链接,但是这个链接不是一一对应的,也就是说,一个inode可以有多个硬链接,即多个文件名,一旦删除了所有的硬链接,这个inode也就无法用文件名访问到了。

我们通过硬链接解决了文件名和实际文件(inode)的对应关系,但是有以下几个缺点:

  • 不允许建立到目录的硬链接。(因为如果可以,会破坏linux的文件目录树形结构,可能导致出现环)
  • 不允许跨文件系统。(应该是不同文件系统不一定都有inode这个东西的原因)

为了解决这些问题,于是出现了另外一个东西,软链接,或称,符号链接(symbolic link)

软链接(符号链接)

为了解决硬链接的缺陷,出现了软链接的概念。软链接和硬链接不同,软链接不关心inode,只关心文件名,也就是说,软链接是用来建立文件名之间的链接的,为访问文件建立一个新的“入口”,可以通过这个入口访问另外一个文件名指定的文件。(使用的方法就是通过建立一个符号链接文件,这个文件的内容是其链接的文件的路径)
关于硬链接的缺陷:

  • 不允许建立到目录的硬链接。(软链接可以建立到目录的链接,因为内部在检索一个目录的时候使用inode而非文件名,所以并不会破坏其结构)
  • 不允许跨文件系统(允许跨文件系统,其他文件系统也应该有文件名这个概念吧?)

就这样通过软链接被解决了。

总结

硬链接:文件名 -> inode
软链接:文件名 -> 文件名

linux hard link和soft link(硬链接和软链接)的简单介绍相关推荐

  1. Linux之 如何查看文件是`硬链接`还是`软链接`

    Linux之 如何查看文件是硬链接还是软链接 可以用 ll 文件名 查看文件属性 以l开头的是软链接 , 相当于快捷方式 以-开头的是硬链接 实验 实验 1 创建一个文件名为"hello&q ...

  2. linux文件存储、inode、硬链接、软链接

    目录 介绍 inode的内容 inode的大小 inode号码 目录文件 硬链接 软链接 介绍 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512 ...

  3. 认识Linux系统中的inode,硬链接和软链接

    在学习和创建软链接遇到了一点问题,总结一下: 在当前文件夹下面建立了两个临时文件夹tempdir1和tempdir2,然后在tempdir2里面创建了一个hello文件,然后用指令ln -s temp ...

  4. linux命令cp建立硬链接,Linux命令ln、cp、硬链接和软链接

    1.Linux链接概念  Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link). [硬连接]  硬连接指通过索引节点来进行连接.在Linux ...

  5. Linux操作(5)——创建硬链接与软链接

    软链接 软链接类比于windows下的快捷方式操作,如果一个文件在很多目录下后才能发现,我们可以将其拖动到桌面容易打开,方便我们的操作,在linux操作系统中也是这样的,命令为ln -s 此命令的a是 ...

  6. 硬链接,软链接,link,rename,symlink,opendir和readdir

    什么是硬链接 struct stat {nlink_t st_nlink; /* Number of hard links}; stat结构体就有一个成员变量----硬链接数 使用ln命令就可以创建硬 ...

  7. 实例讲解Linux系统中硬链接与软链接的创建

    导读 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接.硬链接与软链接的区别从根本上要从Inode节点说 ...

  8. Linux 硬链接和软链接的区别

    硬链接和软链接的区别 Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件.我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user ...

  9. 理解 Linux 的硬链接与软链接

    Linux 的文件与目录 现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用.在 UNIX 系统中,操作系统为磁盘上的文本与图像.鼠标与键盘 ...

  10. linux系统怎么设置硬链接,二、Linux系统硬链接和软链接详细介绍与实践

    链接的概念 在linux系统中,链接可分为两种:一种被称为硬链接(Hard LinK),另一种被称为软链接或符号链接(Symbolic Link).在默认不带参数的情况下,执行ln命令创建的链接是硬链 ...

最新文章

  1. python输入input的用法
  2. Android源代码下载与编译 - 2019
  3. OSPF 报文 链路状态请求报文 LSR
  4. 中国农民丰收节交易会李喜贵演讲 微量元素运用功能农业
  5. 容器安全最佳实践入门
  6. PyFoam来实时输出残差
  7. 手机号脱敏处理_C#简单代码实现对手机号邮箱等隐私信息进行*号打码
  8. json、pickle
  9. ASP.NET AJAX in Action—ScriptManager异常处理示例
  10. [HADOOP问题] 常见问题解决
  11. keil转换c为汇编语言,如何用Keil生成bin、汇编、C与汇编混合文件?
  12. 重点 (四) : 超级全面的iOS资源
  13. 分分钟搞定 OpenV2X 开发环境
  14. 传奇世界修改服务器时间,《传奇世界手游时长版》测试结束公告
  15. egret给对象涂颜色
  16. Wu反走样算法介绍(简单易懂) -Xiaolin Wu’s Algorithm
  17. asp.net英语四六级考试报名系统
  18. PMP缓考怎么操作?
  19. python元祖修改_Python列表的增删改查和元祖
  20. INPUT输入框带默认值

热门文章

  1. ROS开发之如何使用常用可视化工具?
  2. cir模型matlab代码,如何用 Cir 文件进行PSPice 仿真
  3. H - Hangar Hurdles
  4. 系统无法停止通用卷解决方法
  5. 实现原理 扫描枪_原来手持式条码扫描枪是这样运用的原理
  6. 2020寒假训练第一周 思维+模拟
  7. NC65二开单据单据追溯功能开发
  8. Android apk增量升级
  9. [kuangbin带你飞]专题一 简单搜索D - Fliptile(POJ 3279)
  10. 使用windows自带功能实现局域网两台电脑之间共享文件夹