linux的硬链接和软连接的区别及说明

 更新时间:2023年07月27日 14:33:25   作者:大宇进阶之路  
这篇文章主要介绍了linux的硬链接和软连接的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

linux的硬链接和软连接的区别

Linux中有两种链接文件

1)软链接(符号链接symbol),等同于Windows中快捷方式

ln -s 源文件名 符号链接文件名,源文件名和符号链接文件名是主从关系,源被删了,符号链接也就失效了

 eg: ln -s src.c linker.c (linker.c就是src.c的一个符号链接文件);

2)硬链接,ln 源文件名 符号链接文件名,源文件名和符号链接文件名是并列关系,源被删了,符号链接依然有效。硬链接实际上和源文件在硬盘中是同一个东西,效果类似于硬盘上的一个文件,在文件系统上,在我们看来有好多个文件一样。每次删除一个文件时,只要他还有其他的硬链接存在,这个文件就不会被真正删除。只有等所有的链接文件都删除掉了,这个文件才会被真正从硬盘上删除

软链接与硬链接的区别(通俗):

硬链接可认为是一个文件拥有两个文件名;

而软链接则是系统新建一个链接文件,此文件指向其所要指的文件

若源文件改名,则软连接不可用(找不到源文件);硬链接可正常访问到源文件;

修改软连接、硬链接和源文件,访问三者都是同步变化的。

软链接

首先,我建立link_test.txt的测试文件,建立软连接指向测试文件

ln -s 源文件  软连接

查看软连接的内容和源文件内容一样,接着编辑了软连接后,查看软连接和原测试文件

说明编辑软连接就是编辑原文件。测试删除软连接后原文件正常,删除源文件后软连接失效。

同样,当我们修改任何一个软链接文件都会使内容发生改变,文件都保持同步变化。我们也可以看到软链接只有18Kb并不会占用磁盘空间。它只是一个原文件的引用,当我们将原文件删除以后,引用将会失效。

硬链接

ln 源文件  硬连接

建立硬链接后发现,硬链接的大小和原文件一样,并且索引节点号也一样。当我们改变硬链接的文件内容时,同样也会改变原文件的内容。

改变原文件内容,软硬链接内容也都同步改变:

删除原文件

软连接失效,硬链接正常

复制软、硬链接到新的文件

当我们用cp命令复制软链接时,我们复制的是原文件,而不是一个软链接。

复制软、硬链接后,对复制文件修改,都不会影响原文件。

什么是硬链接和软链接

硬链接

由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针, 指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个一个硬链接,文件的链接 数就加 1 。

不足:

1. 不可以在不同文件系统的文件间建立链接;

2. 只有超级用户才可以为目录创建硬链接。

软链接

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符 号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件 进行链接。

不足:

因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录 中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移; 还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

实际场景下,基本是使用软链接。

总结区别如下:

硬链接不可以跨分区,软件链可以跨分区。

硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。

删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux Ubuntu下SSH无密码验证配置的方法步骤

    linux Ubuntu下SSH无密码验证配置的方法步骤

    这篇文章主要介绍了linux Ubuntu下实现SSH无密码验证配置的方法步骤,文中给出了详细的步骤介绍,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • Linux中FTP服务器搭建与安全配置方式

    Linux中FTP服务器搭建与安全配置方式

    这篇文章主要介绍了Linux中FTP服务器搭建与安全配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux静态链接库与模板类的处理方式

    Linux静态链接库与模板类的处理方式

    这篇文章主要介绍了Linux下编译使用静态链接库遇到模板类的时该如何处理。
    2017-11-11
  • linux 搭建svn服务器的方法步骤

    linux 搭建svn服务器的方法步骤

    这篇文章主要介绍了linux 搭建svn服务器的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • 解决linux环境下时区无法设置的问题

    解决linux环境下时区无法设置的问题

    在本篇文章里小编给大家整理的是关于解决linux环境下时区无法设置的问题的方法,需要的朋友们学习下。
    2020-01-01
  • linux命令行大于号、小于号、双大于号、双小于号用法详解

    linux命令行大于号、小于号、双大于号、双小于号用法详解

    文章主要讲述了Linux中重定向符号>>、>>、<、<<的使用方法和作用,>>用于覆盖输出到文件,>>>用于追加到文件,<将后面文件作为前面命令的输入,<<用于全文匹配某个字符串后结束
    2026-04-04
  • windows10安装ubuntu20.04双系统详细图文教程

    windows10安装ubuntu20.04双系统详细图文教程

    这篇文章主要介绍了windows10安装ubuntu20.04双系统详细图文教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 查看Linux版本信息的四种常用方法

    查看Linux版本信息的四种常用方法

    我在管理 Hostease 的 Linux 服务器时,时常需要查看系统的具体版本信息,了解具体的系统版本信息不仅有助于软件安装和系统维护,还能有效解决兼容性问题,本文将介绍几种常用方法,帮助您通过命令行工具快速获取 Linux 发行版及版本信息,需要的朋友可以参考下
    2025-12-12
  • Linux下安装Anaconda3全过程

    Linux下安装Anaconda3全过程

    这篇文章主要介绍了Linux下安装Anaconda3全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 批量数据导入Neo4j的实现方式

    批量数据导入Neo4j的实现方式

    本文总结了Neo4j批量数据导入的三种方式:LOADCSV(处理中小数据集)、neo4j-admin(适用于大数据)及Kettle工具,需注意CSV格式、路径配置、数据类型转换及编码问题,确保数据正确导入
    2025-08-08

最新评论