详解linux软连接和硬链接

yizhihongxing

详解Linux软连接和硬链接

在Linux系统中,链接(link)是一个常用的概念,它可以让一个文件同时存在于多个位置上。Linux系统中的链接分为两种:软链接(symbolic link)和硬链接(hard link)。

软链接

软链接也称符号链接,它是一个特殊的文件,包含了一个指向另外一个文件的路径。软链接类似于Windows系统中的快捷方式,是可见的,且可以跨文件系统使用。

创建软链接

在Linux上,我们可以使用ln命令来创建软链接。格式为:

ln -s [target] [link]

其中,target指向源文件,link则是指向目标文件的路径,它指向了源文件的位置。

示例1:创建一个软链接

$ ls -l
total 0
-rw-r--r-- 1 user user 0 10:44 file1
$ ln -s file1 file2
$ ls -l
total 0
-rw-r--r-- 1 user user 0 10:44 file1
lrwxrwxrwx 1 user user 5 10:47 file2 -> file1

这里我们创建了一个软链接file2,指向了文件file1的位置。第二行命令ls -l用于查看当前目录中的文件和链接,我们可以看到软链接file2的文件类型为l,表示是一个链接文件,并且它的大小为5(字节),是指向file1这个路径的长度。

删除软链接

我们可以使用rm命令来删除软链接,格式为:

rm [link]

其中,link指要删除的软链接路径。

示例2:删除一个软链接

$ rm file2
$ ls -l
total 0
-rw-r--r-- 1 user user 0 10:44 file1

这里我们删除了软链接file2,可以看到文件file1并没有受到影响。

硬链接

硬链接也称为实际链接,它是一个指向文件本身的链接,它的功能和源文件相同,并且和源文件共享inode(文件属性)、user ID和group ID等信息,可以看做是文件的备份。硬链接只能在同一个文件系统中使用。

创建硬链接

在Linux上,我们可以使用ln命令来创建硬链接。格式为:

ln [target] [link]

其中,target指向源文件,link则是指向目标文件的路径,它和源文件共享inode,即它们的文件属性、所有者等信息相同。

示例3:创建一个硬链接

$ ls -i
2536 file1
$ ln file1 file3
$ ls -i
2536 file1 2536 file3

这里我们创建了一个硬链接file3,它和源文件file1共享inode。

删除硬链接

硬链接和源文件共享inode,所以删除硬链接或源文件之后,另一个依然存在。

我们可以使用rm命令来删除硬链接,格式为:

rm [link]

其中,link指要删除的硬链接路径。

示例4:删除一个硬链接

$ rm file3
$ ls -i
2536 file1

这里我们删除了硬链接file3,可以看到源文件file1并没有受到影响。

硬链接和软链接的区别

  • 硬链接只能在同一个文件系统中使用,而软链接可以跨文件系统使用。
  • 硬链接共享相同的inode,所以如果其中一个被删除,其他文件仍然存在。而软链接指向的是另外一个文件,所以如果源文件被删除,链接无效。
  • 硬链接不能对目录使用,而软链接可以。

总结

Linux中的链接是一个常用的概念,它可以让一个文件同时存在于多个位置上。软链接类似于Windows系统中的快捷方式,它可以跨文件系统使用;硬链接和源文件共享inode,可以看做是文件的备份,在同一个文件系统中使用。不同的链接方式适用于不同的场景,我们应该根据需要选择不同的链接方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解linux软连接和硬链接 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • .net中webconfig 详解

    下面是”.net中webconfig 详解”的完整攻略。 一、什么是Web.config Web.config是一个XML格式的文件,它存储着一个Web应用程序中的配置信息,如数据库连接字符串、身份验证方式、Session状态管理等等。 Web.config配置信息可以修改,可以在运行时动态修改,这样就不用重新编译整个应用程序,使得应用程序的管理更加方便。 …

    database 2023年5月21日
    00
  • redis数据库写入数据时提示redis.exceptions.ResponseError错误

    今天运行Django项目在redis数据库写入数据时提示如下错误: ERROR log 228 Internal Server Error: /image_code/cf9ccd75-d274-45c0-94a4-a83c8c189965/ Traceback (most recent call last): File “/home/sky/.virtual…

    Redis 2023年4月13日
    00
  • Golang交叉编译之跨平台编译使用详解

    Golang交叉编译之跨平台编译使用详解 在 Golang 开发中,经常需要将代码编译成不同操作系统或 CPU 下的可执行文件,这个过程就被称为交叉编译。本文将介绍如何使用 Golang 进行跨平台编译。 准备工作 在进行 Golang 跨平台编译之前,需要先安装目标平台的交叉编译工具,以 Windows 平台为例: sudo apt-get update …

    database 2023年5月22日
    00
  • C#的StackExchange.Redis实现订阅分发模式

    wu大糊涂关注 一、订阅分发模式介绍 Redis发布订阅—Pub/Sub模式或者说是观察者模式。我想大家即使没有使用过,也已经耳熟能详了。 先简单举例说明下应用场景,在场景中我们可以分析到其优势在哪。 比如你的线上应用应用,你想设置一个日志报警系统,当应用出现异常的时候,立马发送通知给你,可能是短信的形式,也可能是邮件的形式。当然如果只将报警通知给你一个人,…

    Redis 2023年4月12日
    00
  • MySQL在线DDL工具 gh-ost的原理解析

    MySQL在线DDL工具 gh-ost的原理解析 简介 gh-ost是一个基于Percona OSC 原理的 MySQL online DDL 工具,它可以在线帮助MySQL用户快速升级表结构、移动数据,同时避免关闭业务及长时间占用MySQL资源等问题。此外,gh-ost的操作具有可回滚性,可以很方便的撤销变更操作。 原理 基本原理 gh-ost的原理与 F…

    database 2023年5月22日
    00
  • linux内核select/poll,epoll实现与区别

    Linux内核select/poll,epoll实现与区别 在Linux内核中,select、poll和epoll是三种常用的网络I/O多路复用机制。其中select和poll是早期的实现方式,epoll是较新的实现方式,相比于前两者具有更好的性能。本文将从多个方面进行介绍,以帮助读者更好地了解它们的实现和区别。 select select是Unix中最古老…

    database 2023年5月22日
    00
  • 如何使用Python从数据库中获取CLOB类型的数据?

    以下是如何使用Python从数据库中获取CLOB类型的数据的完整使用攻略。 使用Python从数据库中获取CLOB类型的数据的前提条件 在Python中从数据库中获取CLOB类型的数据前,需要保已经安装并启动支持数据的,例如Oracle、MySQL或PostgreSQL,并且需要安装Python的相应数据库驱动程序,例如cx_Oracle、mysql-con…

    python 2023年5月12日
    00
  • MySQL DBA教程:Mysql性能优化之缓存参数优化

    MySQL DBA教程:MySQL性能优化之缓存参数优化完整攻略 在进行 MySQL 性能优化时,缓存参数优化是一个非常重要的环节,通过合理的调整可以极大地提升 MySQL 数据库的执行效率。本文将从 MySQL 的缓存结构入手,详细讲解 MySQL 缓存参数的优化方法。 MySQL的缓存结构 在了解 MySQL 缓存参数优化方法之前,必须要先理解 MySQ…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部