Linux学习之inode和软链接、硬链接

文章目录

  • 1.inode学习
  • 2.硬链接和软链接
  • 3.硬链接和软链接的创建语法
    • 3.1.创建硬链接
    • 3.2.创建软链接
      • 3.2.1.目标使用绝对路径
      • 3.2.2.目标使用相对路径

1.inode学习

参考: 理解inode
这个博客里面也包含了对下面的软链接和硬链接的讲解,但是下面软链接和硬链接的博客里的图很好,更加形象。

2.硬链接和软链接

参考: 图示软硬链接的区别
主要就是如下图所示,从图中可以看出硬链接只是为文件起了一个别名,指向的是一个inode。而软链接相当于创建了一个新的文件(注意这个是真正的文件,有数据的文件),这个文件内容里存储的指向源文件的指针。
所以从上面的解释来看,硬链接相当于C++中的引用,而软链接相当于C++中的指针。
这个类比可能不太恰当?
Linux学习之inode和软链接、硬链接_第1张图片

3.硬链接和软链接的创建语法

3.1.创建硬链接

ln 目标文件名 硬链接名

注意上面的硬链接名可以包含路径,也就是可以把当前创建的硬链接放到任意路径下。而目标文件名只是指示要创建硬链接的文件在哪里,和后面的硬链接存放的位置没有关系(这一点和软链接不同,软链接创建的时候会同时创建一个文本来描述目标文件在哪里,所以如果使用相对路径,目标文件名就和硬链接所在的目录有关了)
比如如下的目录结构,想要给fun文件创造一个硬链接存放在father下,再创造一个硬链接存放在dir下,那么

  • 目标文件名遵循的原则是:在当前命令行的位置,只要能找到fun文件即可。因为硬链接就是创建一个新的文件,这个文件的inode和目标文件的inode相同即可。所以输入创建命令的时候只要能找到这个目标文件即可,至于创建的硬链接存放在哪里无所谓。由于创建的硬链接使用和目标文件相同的inode号,而inode是访问数据的时候真正起作用的,所以创建了硬链接之后,即使把目标文件删除了,由于硬链接还保存着目标文件指向的数据的inode号,所以此时通过硬链接仍然能够访问指向的文件数据。
  • 硬链接名遵循的原则是:任意,因为相当于此时创建了一个和目标文件名一样的文件名,通过这个文件名也可以访问数据,即使目标文件删除了,也能正常访问,因为创建硬链接的时候已经得到文件指向的数据的inode号。
    Linux学习之inode和软链接、硬链接_第2张图片

3.2.创建软链接

按照目标文件或目录(注意可以为目录创建软链接)的路径方式,可以分为绝对路径和相对路径。

3.2.1.目标使用绝对路径

ln 目标文件或目标目录的绝对路径 软链接名

绝对路径比较简单,就是直接指定目标文件或目录到底在哪里。而后面的软链接名的路径则随意,因为这里就是指示软链接存放在哪里。

3.2.2.目标使用相对路径

ln 目标文件或目标目录相对于软链接所在的目录的相对路径 软链接名

后面的软链接名的路径随意,因为这里就是指示软链接存放在哪里。但是注意前面的目标的路径,一定是相对于软链接所在的目录的相对路径。这个和软链接的原理有关,因为软链接创建的时候通过创建一个特殊类型的新文件,这个文件包含了指向目标文件或目录的指针。既然文件中存放的是指针,所以指定这个路径的时候,肯定是相对于当前这个文件来说的,所以目标文件或目录就要以相对与软链接的位置写相对路径。
相对路径更灵活,当包含软链接的目录被重命名或者移动的时候,软链接使用相对路径仍然能够生效。
Linux学习之inode和软链接、硬链接_第3张图片

你可能感兴趣的:(Linux工具操作笔记,linux)