写点什么

Linux 链接类型详解:硬链接与软链接

作者:这我可不懂
  • 2024-07-04
    福建
  • 本文字数:1694 字

    阅读完需:约 6 分钟

Linux 链接类型详解:硬链接与软链接

Linux 链接类型详解

在 Linux 系统中,存在两种主要的链接类型:硬链接(Hard Link)和软链接(符号链接,Symbolic Link)。这两种链接方式在文件系统中的作用和实现方式有所不同。

1. 硬链接(Hard Link)

硬链接可以将其理解为一个指向原始文件 inode 的指针,系统不会为它分配独立的 inode 和文件数据。原始文件和硬链接文件实际上是同一个文件,只是名字不同。

特点:

  • 硬链接与原始文件共享同一个 inode。

  • 每创建一个硬链接,该文件的 inode 链接数就会增加 1。

  • 只有当文件的 inode 链接数为 0 时,文件才会被删除。

  • 硬链接可以理解为文件副本,但不占用额外的硬盘空间。

  • 硬链接不能跨文件系统创建。

  • 不能为目录创建硬链接。

示例操作:在 CentOS 中,创建硬链接的命令为 ln

[root@centos ~]# echo "Welcome to CentOS" > original.txt[root@centos ~]# ln original.txt hardlink.txt[root@centos ~]# ls -l original.txt hardlink.txt-rw-r--r-- 2 root root 17 Mar 10 12:00 hardlink.txt-rw-r--r-- 2 root root 17 Mar 10 12:00 original.txt[root@centos ~]# rm original.txt[root@centos ~]# cat hardlink.txtWelcome to CentOS
复制代码

上述操作中,删除 original.txt 文件后,通过 hardlink.txt 仍然可以访问到原始文件的内容。

2. 软链接(符号链接,Symbolic Link)

软链接是一个包含所链接文件路径名的特殊文件,因此它能够链接目录文件,也可以跨文件系统进行链接。

特点:

  • 软链接存储的是指向原始文件路径的字符串。

  • 软链接可以对不存在的文件名进行链接。

  • 软链接可以跨文件系统进行链接。

  • 软链接可以链接目录。

  • 当原始文件被删除后,软链接将失效。

示例操作:在 CentOS 中,创建软链接的命令为 ln -s

[root@centos ~]# echo "Hello from CentOS" > source.txt[root@centos ~]# ln -s source.txt symlink.txt[root@centos ~]# ls -l source.txt symlink.txt-rw-r--r-- 1 root root 17 Mar 10 12:05 source.txtlrwxrwxrwx 1 root root 10 Mar 10 12:05 symlink.txt -> source.txt[root@centos ~]# cat symlink.txtHello from CentOS[root@centos ~]# rm source.txt[root@centos ~]# cat symlink.txtcat: symlink.txt: No such file or directory
复制代码

上述操作中,删除 source.txt 文件后,symlink.txt 链接失效,无法再访问原始文件的内容。

3. 链接命令详解

使用 ln 命令可以为文件创建一个链接。链接类型分为硬链接和软链接,默认的链接类型是硬链接。

  • 硬链接:

    ln source target # 创建硬链接

  • 软链接:

    ln -s source target # 创建软链接

4. 举例说明

为了更好地理解软链接和硬链接的不同特质,我们创建一个类似于 Windows 系统中快捷方式的软链接。

[root@centos ~]# echo "Welcome to CentOS" > readme.txt[root@centos ~]# ln -s readme.txt readit.txt[root@centos ~]# cat readit.txtWelcome to CentOS[root@centos ~]# rm readme.txt[root@centos ~]# cat readit.txtcat: readit.txt: No such file or directory
复制代码

接下来对一个原始文件创建一个硬链接:

[root@centos ~]# echo "Welcome to CentOS" > readme.txt[root@centos ~]# ln readme.txt readit.txt[root@centos ~]# cat readit.txtWelcome to CentOS[root@centos ~]# rm readme.txt[root@centos ~]# cat readit.txtWelcome to CentOS
复制代码

在上述示例中,删除 readme.txt 后,硬链接 readit.txt 仍然可以访问原始文件的内容,而软链接则不能。

作为开发者,我们需要保持好奇心和学习热情,不断探索新的技术,只有这样,我们才能在这个快速发展的时代中立于不败之地。介绍一款程序员都应该知道的软件JNPF快速开发平台,很多人都尝试用过它,它是功能的集大成者,任何信息化系统都可以基于它开发出来。

JNPF 可以实现应用从创建、配置、开发、测试到发布、运维、升级等完整生命周期的管理。减少了传统应用程序的代码编写量,通过图形化、可视化的界面,以拖放组件的方式,即可快速生成应用程序的产品,大幅降低了开发企业管理类软件的难度。

当然,我更建议大家成为一个全栈,不要把自己的定位局限于前端。

感谢阅读本文

如果有什么建议,请在评论中让我知道。我很乐意改进。

用户头像

低代码技术追随者,为全民开发而努力 2023-02-15 加入

大家好,我是老王,专注于分享低代码图文知识,感兴趣的伙伴就请关注我吧!

评论

发布
暂无评论
Linux 链接类型详解:硬链接与软链接_这我可不懂_InfoQ写作社区