前言

链接有两种硬链接(hard link)和字符链接
当我们ln一个硬链接时,ls -al显示出来的文件链接数量就会加1,但是ln -s一个字符链接却不会。

说明

  • 文件的读取
    文件名——>inode——>数据区块

  • ln来创建链接

  1. 符合链接,有参数-s
  2. 硬链接,无参数

硬链接

  • 这种链接只是新创建一个文件,这个文件里面的inode与源文件的inode相同,所以都会指向相同的数据区块。

f1
   \
    ->inode->date block
   /
f2 

image.png

  • 所以,我们新建一个硬链接ln test testing。我们把其中的一个文件删除,另外一个文件也能够访问到原始数据。

  • 优点
    可以将源文件删除,也能访问到原来的数据。

  • 缺点

  1. 不能创建目录的硬链接
  2. 不能跨文件系统

符号链接

  • 也是创建一个新文件,但是这个文件指向源文件的文件名,它等同于Windows的快捷方式。

f2->f1->ionde->date block

image.png

  • 所以,我们新建一个符号链接ln -s test test2。我们把源文件删除了(f1),那么符合链接文件无效(f2)

  • 优点
    可以创建目录的符号链接

  • 缺点
    删除源文件,通过符合链接不能访问原始数据

补充

目录的符号链接

  • ln -s test test2
    如果我们修改test2目录中的文件,那么test中的文件也会做相应的改变。因为,test2文件只是当作指向作用,cd test2的时候,就等于cd test

目录的链接数量

mkdir /test/workspace
但我们创建这个目录时,相应地会产生两个隐藏目录。一共三个目录。
分别是
/test/workspace
/test/workspace .
/test/workspace ..

  • 因为/test/workspace ./test/workspace相同,所以ls -al下,workspace的链接有2

  • /test/workspace ..和/test相同,所以/test的链接会+1

当我们新建目录时,本目录的链接数为2,上级目录的链接数+1