简介

在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。而有一种方法可以快速的寻找到数据元,那就是软硬链接
链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。

创建链接命令

软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件

软链接文件的大小和创建时间和源文件不同。软链接文件只是维持了从软链接到源文件的指向关系(从jys.soft->jys可以看出),不是源文件的内容,大小不一样容易理解。
硬链接文件和源文件的大小和创建时间一样。硬链接文件的内容和源文件的内容一模一样,相当于copy了一份。
软链接
软链接(symbolic link) : 等同于 Windows 系统下的快捷方式。仅仅包括所含链接文件的路径名字。因此能链接目录,也能跨文件系统链接。但是,当删除原始文件后,链接文件也将失效。
硬链接(hard link) : 可以将它理解为一个 “指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接

实例详解

[root@localhost b]# echo “this is a test” >test.c
[root@localhost b]# cat test.c
this is a test
[root@localhost b]# echo “this is a test2” >test2.c
[root@localhost b]# cat test2.c
this is a test2

创建一个软链接

[root@localhost b]# ln -s   test.c  soft
[root@localhost b]# ls -li
总用量 8
15728644 lrwxrwxrwx 1 root root 6 7月 30 18:33 soft -> test.c
15728643 -rw-r--r-- 1 root root 16 7月 30 18:31 test2.c
15728642 -rw-r--r-- 1 root root 15 7月 30 18:30 test.c

创建一个硬链接

[root@localhost b]# ln  test2.c  hard
[root@localhost b]# ls -li
总用量 12
15728643 -rw-r--r-- 2 root root 16 7月 30 18:31 hard
15728644 lrwxrwxrwx 1 root root 6 7月 30 18:33 soft -> test.c
15728643 -rw-r--r-- 2 root root 16 7月 30 18:31 test2.c
15728642 -rw-r--r-- 1 root root 15 7月 30 18:30 test.c

硬链接解析:
通过输出的文件属性可以知道创建的硬链接和文件本身的inode号是一样的都为15728643,这是因为硬链接和源文件同时是访问同一个地址空间,生成一个硬链接相当于copy一份该文件,如果删除源文件test.2.c,hard文件不会删除,文件的内容也是在的,具体如下:

[root@localhost b]# ls
hard soft test2.c test.c
[root@localhost b]# cat hard
this is a test2
[root@localhost b]# cat test2.c
this is a test2
[root@localhost b]# rm -rf test2.c
[root@localhost b]# cat hard
this is a test2
[root@localhost b]# ls -li
总用量 8
15728643 -rw-r--r-- 1 root root 16 7月 30 18:31 hard
15728644 lrwxrwxrwx 1 root root 6 7月 30 18:33 soft -> test.c
15728642 -rw-r--r-- 1 root root 15 7月 30 18:30 test.c

软链接解析:
生成的软链接相当于记录了源文件的地址,访问该软链接相当于直接访问该源文件,类似于windows的快捷方式,如果删除源文件,该软链接也会相应丢失源文件内容,访问出错 ,具体如下:

[root@localhost b]# ls -li
总用量 8
15728643 -rw-r--r-- 1 root root 16 7月 30 18:31 hard
15728644 lrwxrwxrwx 1 root root 6 7月 30 18:33 soft -> test.c
15728642 -rw-r--r-- 1 root root 15 7月 30 18:30 test.c
[root@localhost b]# cat test.c
this is a test
[root@localhost b]# cat soft
this is a test
[root@localhost b]# rm -rf test.c
[root@localhost b]# cat soft
cat: soft: 没有那个文件或目录
[root@localhost b]# ls -li
总用量 4
15728643 -rw-r--r-- 1 root root 16 7月 30 18:31 hard
15728644 lrwxrwxrwx 1 root root 6 7月 30 18:33 soft -> test.c

若在软链接上重新写入内容 到soft中,则相当于生成了test.c文件,链接又重新生效,具体如下:

[root@localhost b]# ls -li
总用量 8
15728643 -rw-r--r-- 1 root root 16 7月 30 18:31 hard
15728644 lrwxrwxrwx 1 root root 6 7月 30 18:33 soft -> test.c
15728642 -rw-r--r-- 1 root root 14 7月 31 22:36 test.c
[root@localhost b]# cat test.c
this is test3
[root@localhost b]# cat soft
this is test3

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux30470 人正在系统学习中

[转帖]Linux系统硬链接和软链接具体实例讲解(超详细)的更多相关文章

  1. Linux系统硬链接和软链接介绍

    1.链接的概念 在Linux系统中链接分为硬链接和软连接两种,一种为硬链接,另一种为软连接或符号链接(symbolic Link).ln命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建 ...

  2. 【Linux】Linux系统硬链接和软链接

    在linux系统中有种文件是链接文件,可以为解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link). 查看lin ...

  3. Linux系统——硬链接与软链接

    文件属性软硬连接: 链接有两种,一种为硬链接(Hard Link),另一种为软链接或符号链接(Symbolic Link或Soft Link). 建立硬链接时,链接文件和被链接文件必须位于同一个文件系 ...

  4. Linux系统硬链接和软链接说明 - 运维笔记

    在linux系统中有种文件是链接文件,可以用来解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link).先来查看下 ...

  5. 二、Linux系统硬链接和软链接详细介绍与实践

    链接的概念 在linux系统中,链接可分为两种:一种被称为硬链接(Hard LinK),另一种被称为软链接或符号链接(Symbolic Link).在默认不带参数的情况下,执行ln命令创建的链接是硬链 ...

  6. linux系统 硬链接和软链接

    背景: 当几个用户同在一个项目里工作时.经常须要共享文件. 假设一个共享文件同一时候出如今属于不同用户的不同文件夹下.工作起来就非常方便. 比如B和C文件夹下有一文件D是两者都能够訪问和改动的共享文件 ...

  7. 理解 Linux 的硬链接与软链接(待研究)

    从 inode 了解 Linux 文件系统 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux ...

  8. Linux 的硬链接与软链接

    Linux 的硬链接与软链接    http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/    若一个 inode 号对 ...

  9. 理解Linux的硬链接与软链接-转载

    理解Linux的硬链接与软链接 来自:https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html

  10. 转:理解 Linux 的硬链接与软链接

    Linux 的文件与目录 现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程 创建信息的逻辑单元可被多个进程并发使用.在 UNIX 系统中,操作系统为磁盘上的文本与图像.鼠标与键 ...

随机推荐

  1. 未加载mscorlib.pdb

    前言: 早上上班按照正常流程打开Visual Studio,调试本地项目,然后奇怪的是一直提示未加载mscorlib.pdb,导致项目无法正常运行,经过一番折腾最后解决了这个突如其来的bug! 问题重 ...

  2. HTML&CSS基本知识

    HTML&CSS基本知识 一.HTML基本介绍 W3C标准(成立于1994年,web技术领域最权威和具影响力的国际中立性技术标准机构) world Wide web Consortium(万维 ...

  3. 【“互联网+”大赛华为云赛道】EI命题攻略:华为云EI的能力超丰富,助你实现AI梦想

    摘要:本次"互联网+"大赛华为云赛道EI命题,从实际业务场景出发,在人工智能和大数据领域推出四个命题. 本文分享自华为云社区<["互联网+"大赛华为云赛道 ...

  4. 大银行数字化升级之后,火山引擎 VeDI 这次要把能力带给中小金融机构

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 数据技术是金融行业数字化转型的重要动力. 近年来,各大银行在全面推进数据技术建设上动作频频.比如,建设银行深化平台经营,依 ...

  5. 配置阿里云docker镜像加速

    配置好后 重新加载一下 daemon [root@centos-linux jimmy]# systemctl daemon-reload [root@centos-linux jimmy]# sys ...

  6. linux 实时刷新显示当前时间

    同步阿里云时间 ntpdate ntp1.aliyun.com 使用watch命令:周期性的执行一个命令,并全屏显示. watch -n 1 date 即可:每1秒刷新date命令. # 格式 wat ...

  7. C# 和 java 基本数据类型

    C# 和 java 基本数据类型 C#类型 java类型 描述 默认值 bool boolean 布尔值 False byte byte 8 位无符号整数 0 char char 16 位 Unico ...

  8. peewee update和save性能分析

    背景 python项目中使用了peewee这款orm框架,在对数据库更新时有两种语法,分别是save和update方法.有同事说从peewee的日志来看,update比save更快,于是做了一个简单的 ...

  9. 微服务系列-如何使用 RestTemplate 进行 Spring Boot 微服务通信示例

    概述 下面我们将学习如何创建多个 Spring boot 微服务以及如何使用 RestTemplate 类在多个微服务之间进行同步通信. 微服务通信有两种风格: 同步通讯 异步通信 同步通讯 在同步通 ...

  10. GPT-4测评,大家先别急,图片输入还没来

    昨天GPT-4朋友圈刷屏,我更新了一篇小文章,极简罗列GPT-4的一些情报: 1 ChatGPT Plus用户才可试用GPT-4 2 试用阶段每四小时最多100条信息 3 知识库还是2021年 4 上 ...