简介

在 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. Nignx快速入门

    Nginx快速入门 一.简介 产生的背景:当一台服务器同一时刻被大量客户端请求访问时,访问量超出服务器请求范围,服务器处理不过来,发生宕机或者丢失连接情况下,产生了Nignx反向代理技术. Nginx ...

  2. 云图说|“真人?机器?傻傻分不清!” WAF Bot管理,带你慧眼辨“精”!

    黑产SEO,恶意竞争,交易欺诈--企业业务频受恶意Bot流量困扰? 华为云Web应用防火墙Bot管理功能,帮助您轻松甄别并拦截恶意Bot流量,规避恶意 Bot 行为带来的业务风险. 企业主机安全(Ho ...

  3. JPEG/Exif/TIFF格式解读(4):win10照片旋转win7不识别

    xif元数据根据不同的内容分布在五个不同的IFD中. IFD0中的数据是由TIFF定义的基本图像数据,其中有些与照片无关,所以Exif只实现其中一小部分.这部份数据在Photoshop中称为TIFF元 ...

  4. 干货来了!阿里发布近300页Flink实战电子书

    近300页实用干货总结,帮你解决 Flink 实战应用难题!<Apache Flink电子书合辑>收录来自bilibili.美团点评.小米.OPPO.快手.Lyft.Netflix等一线大 ...

  5. C# 使用SqlDataAdapter和DataSet来访问数据库

    使用SqlDataAdapter和DataSet来访问数据库 报:已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭 解决方法,使用 using 包住 connectio ...

  6. Linux 创建新用户

    添加用户组[root@VipSoft ~]#groupadd admin 添加用户[root@VipSoft ~]#useradd jimmy -m -d /home/jimmy -g admin 修 ...

  7. Hugging Face 音频 AI 派对直播回放(上)

    直播回放视频地址:https://www.bilibili.com/video/BV1nh4y1X7zs/?vd_source=c5a5204620e35330e6145843f4df6ea4 为了庆 ...

  8. OLAP引擎也能实现高性能向量检索,据说QPS高于milvus!

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 随着LLM技术应用及落地,数据库需要提高向量分析以及AI支持能力,向量数据库及向量检索等能力"异军突起& ...

  9. Docker 和 VMware不兼容问题

    直接贴解决方案: 当想使用 VMware bcdedit /set hypervisorlaunchtype off 当想使用 Docker 时 bcdedit /set hypervisorlaun ...

  10. AcWing 第 1 场周赛补题记录(A~C)

    比赛链接:Here AcWing 3577. 选择数字 排序,然后选取两个数组的最大值 void solve() { int n; cin >> n; vector<int>a ...