linux 符号链接和硬链接


linux 链接分两种,一种是硬链接(hard link),另一种是符号链接(symbolic link)。

命令

  • 硬链接:$ ln src-file dst-file
  • 符号链接:$ ln -s src-file dist-file

硬链接

硬链接通过索引节点进行链接。在linux的文件系统,保存在磁盘分区的文件不管是什么类型都会给他分配一个编号,称为索引节点号。在linux中,多个文件名指向同一个索引节点是存在的。这种情况就是硬链接。即便删除源文件,如果这个文件的硬链接还存在,则这个文件不会被删除,除非所有的硬链接全部被删除(即当前文件的索引计数为0),这个文件才真正意义上的被删除(释放空间),也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除。

硬链接只能链接文件,不能指向文件夹。

符号链接

类似于windows系统的快捷方式,它实际上是一个特殊的文件,其中保存的是另一个文件的位置信息。

符号链接可以指向文件夹和文件,当源文件删除时,符号链接失效。

linux 符号链接和硬链接_第1张图片
20DB.tmp.jpg

从上面结果可以看出,硬链接文件file-link-d的inode和源文件file1相同,但是符号链接不同

linux 符号链接和硬链接_第2张图片
Paste_Image.png

当删除源文件后,看到,硬链接文件依然有效,说明删除文件只是将文件的索引计数减一,而符号链接由于保存的是源文件的地址,当源文件被删除,符号连接找不到指向的文件,所以符号链接失效。


总结

  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

你可能感兴趣的:(linux 符号链接和硬链接)