Linux软连接和硬链接详解

一、软链接和硬链接的概念

在Linux文件系统中,链接是一种文件系统中的指向另一个文件或目录的引用。软链接(Symbolic Link或者叫做Symlink)和硬链接(Hard Link)是Linux中两种不同的链接类型。

软链接,也称为符号链接,它是一种特殊的文件,它包含有另一文件或目录的路径信息。软链接以“ln -s”命令建立,软链接可以创建指向目录或文件的链接,软链接也可以创建指向不存在的文件或目录的链接。

硬链接是将一个文件存在的目录项指向同一个索引节点,也就是说,硬链接是指多个文件句柄指向同一个文件数据块。硬链接可以理解为对同一文件的多个名字,通过“ln”命令建立。

二、软链接和硬链接的区别

软链接和硬链接的不同点1:文件类型

软链接和硬链接的文件类型不同。软链接是一个单独的文件,它的文件类型是“伪文件”,文件大小只有原文件的几个字节;而硬链接并不单独占用空间,它是一个与原文件完全相同的文件,文件类型是“普通文件”,也就是说,在硬链接创建之后,无论是原文件还是硬链接之间做的改动都会同时反映出来。

软链接和硬链接的不同点2:路径解析

软链接和硬链接在解析路径时的方式不同,硬链接通过文件的i节点来解析,软链接通过文件路径名来解析。

$ ls -li file1
2582235 -rw-r--r--. 2 user1 user1 6 Jul  9 11:31 file1
$ ln file1 file2
$ ln -s file1 file3
$ ls -li file{1,2,3}
2582235 -rw-r--r--. 3 user1 user1 6 Jul  9 11:31 file1
2582235 -rw-r--r--. 3 user1 user1 6 Jul  9 11:31 file2
2582236 lrwxrwxrwx. 1 user1 user1 5 Jul  9 11:32 file3 -> file1

从上述的代码可知,file2是硬链接,file3是软链接。在创建硬链接时,新增的硬链接文件file2,实际只是在文件系统中新增了一个目录项,但是所有的目录项都是与原文件file1关联的。而软链接则是在文件系统中新增了一个“伪文件”,这个“伪文件”指向了原文件file1。

软链接和硬链接的不同点3:符号链接的作用范围

因为软链接是通过文件路径名来解析的,所以软链接对文件名的长度没有限制,可以跨越文件系统,解析任意路径上的文件;而硬链接只能建立在同一个文件系统中。

三、软链接和硬链接的示例

下面我们来演示一下软链接和硬链接的使用方法。

建立软链接

使用“ln -s”命令来建立软链接,例如:

$ touch file1 file2
$ ln -s file1 file3
$ ls -li file{1,2,3}
8197166 -rw-r--r-- 1 user1 user1 0 Jul  9 13:15 file1
8197167 -rw-r--r-- 1 user1 user1 0 Jul  9 13:15 file2
8197851 lrwxrwxrwx 1 user1 user1 5 Jul  9 13:15 file3 -> file1

从上面的例子中可知:建立软链接时,file3指向的是file1的路径。

建立硬链接

使用“ln”命令来建立硬链接,例如:

$ ln file1 file4
$ ls -li file{1,2,3,4}
8197166 -rw-r--r-- 2 user1 user1 0 Jul  9 13:15 file1
8197167 -rw-r--r-- 1 user1 user1 0 Jul  9 13:15 file2
8197851 lrwxrwxrwx 1 user1 user1 5 Jul  9 13:15 file3 -> file1
8197852 -rw-r--r-- 2 user1 user1 0 Jul  9 13:20 file4

从上面的例子中可知:因为file4是对file1的硬链接,所以修改其中任意一个文件都会同时反映出来;而且,通过“ls -li”命令也可以看出来,硬链接的索引节点编号是相同的。

删除软链接和硬链接

删除软链接和硬链接仅仅是删除链接本身,而不是文件本身。

$ rm file3
$ rm file4

四、链接的使用场景

软链接和硬链接在Linux系统中的应用非常广泛,尤其是在文件共享、备份、存档等方面有很好的效果。

软链接可以方便地在文件间共享数据,并且不会造成不必要的文件复制。同时,在升级更新时,只需要改变软链接的指向即可实现文件的更新。

硬链接通常用于类Unix系统的软件管理中。例如,当我们安装一个新软件时,新软件的所有文件都很可能会放在“/usr/local/bin”等目录下,在软件管理中,如果创建软链接,那么当我们卸载软件后仍然会有一些残留文件存在,造成垃圾文件的出现。而使用硬链接,这些文件都指向同一个索引节点,如果某个硬链接被删除,只要文件本身还被其他硬链接文件占用,那么实际上该文件并不会被删除。

总结

软链接和硬链接是Linux系统中非常常用的两种链接方式,通过本文的介绍,我们可以知道软链接和硬链接的不同点,并且知道了软链接和硬链接的使用方法。

原创文章,作者:LTKD,如若转载,请注明出处:https://www.506064.com/n/144140.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
LTKDLTKD
上一篇 2024-10-24 15:27
下一篇 2024-10-24 15:27

相关推荐

  • Avue中如何按照后端返回的链接显示图片

    Avue是一款基于Vue.js、Element-ui等技术栈的可视化开发框架,能够轻松搭建前端页面。在开发中,我们使用到的图片通常都是存储在后端服务器上的,那么如何使用Avue来展…

    编程 2025-04-28
  • LwIP短链接client例程用法介绍

    本文将详细阐述LwIP短链接client例程,该例程是基于LwIP协议栈实现的一个短链接客户端程序,适用于嵌入式设备上进行互联网通信。 一、LwIP介绍 LwIP(Lightwei…

    编程 2025-04-28
  • 如何创建短链接和实现热切换

    在本文中,我们将会介绍如何使用Python创建短链接和实现热切换功能。 一、创建短链接 1、什么是短链接?通俗易懂来说,短链接就是将长链接变成一个短小精悍的地址,通常是为了方便用户…

    编程 2025-04-28
  • 如何在Linux中添加用户并修改配置文件

    本文将从多个方面详细介绍在Linux系统下如何添加新用户并修改配置文件 一、添加新用户 在Linux系统下创建新用户非常简单,只需使用adduser命令即可。使用以下命令添加新用户…

    编程 2025-04-27
  • 源程序只有经过编译和链接后才能成为可执行程序

    源程序只有经过编译和链接后才能成为可执行程序,这是编程开发中极为重要的一个环节。下面从编译、链接以及可执行程序的生成过程三个方面来详细阐述。 一、编译 编译是将源码转化为机器代码的…

    编程 2025-04-27
  • 如何解决linux jar包 invalid or corrupt jarfile问题

    对于许多开发人员和系统管理员在Linux环境下使用Java开发过程中遇到的一个常见的问题是 invalid or corrupt jarfile(无效或损坏的jar文件)错误。当您…

    编程 2025-04-27
  • Python中提取子链接Python头歌

    本文将从多个方面详细阐述Python中提取子链接Python头歌的方法和技巧。 一、正则表达式方法 使用Python的正则表达式模块可以方便地提取子链接Python头歌。以下是一个…

    编程 2025-04-27
  • 在Linux上安装JRE并配置环境变量

    本文将从以下几个方面为您详细阐述如何在Linux系统上,通过自己账户安装JRE,并且配置环境变量。 一、安装JRE 在进行安装前,我们需要下载JRE的安装包并解压,可以从官方网站下…

    编程 2025-04-27
  • GTKAM:Linux下的照片管理器

    GTKAM是用于Linux操作系统的一款照片管理器,它支持多种相机及存储设备,并提供了一系列强大的工具,让用户可以方便地浏览、管理、编辑和导出照片。本文将从多个方面对GTKAM进行…

    编程 2025-04-27
  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25

发表回复

登录后才能评论