[转帖]Linux系统硬链接和软链接具体实例讲解(超详细)
简介
在 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
[转帖]Linux系统硬链接和软链接具体实例讲解(超详细)的更多相关文章
- Linux系统硬链接和软链接介绍
1.链接的概念 在Linux系统中链接分为硬链接和软连接两种,一种为硬链接,另一种为软连接或符号链接(symbolic Link).ln命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建 ...
- 【Linux】Linux系统硬链接和软链接
在linux系统中有种文件是链接文件,可以为解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link). 查看lin ...
- Linux系统——硬链接与软链接
文件属性软硬连接: 链接有两种,一种为硬链接(Hard Link),另一种为软链接或符号链接(Symbolic Link或Soft Link). 建立硬链接时,链接文件和被链接文件必须位于同一个文件系 ...
- Linux系统硬链接和软链接说明 - 运维笔记
在linux系统中有种文件是链接文件,可以用来解决文件的共享使用.链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link).先来查看下 ...
- 二、Linux系统硬链接和软链接详细介绍与实践
链接的概念 在linux系统中,链接可分为两种:一种被称为硬链接(Hard LinK),另一种被称为软链接或符号链接(Symbolic Link).在默认不带参数的情况下,执行ln命令创建的链接是硬链 ...
- linux系统 硬链接和软链接
背景: 当几个用户同在一个项目里工作时.经常须要共享文件. 假设一个共享文件同一时候出如今属于不同用户的不同文件夹下.工作起来就非常方便. 比如B和C文件夹下有一文件D是两者都能够訪问和改动的共享文件 ...
- 理解 Linux 的硬链接与软链接(待研究)
从 inode 了解 Linux 文件系统 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux ...
- Linux 的硬链接与软链接
Linux 的硬链接与软链接 http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/ 若一个 inode 号对 ...
- 理解Linux的硬链接与软链接-转载
理解Linux的硬链接与软链接 来自:https://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/index.html
- 转:理解 Linux 的硬链接与软链接
Linux 的文件与目录 现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程 创建信息的逻辑单元可被多个进程并发使用.在 UNIX 系统中,操作系统为磁盘上的文本与图像.鼠标与键 ...
随机推荐
- Flutter Getx 中的Dialog 以及改变主题
设置应用程序入口 当我们导入依赖后,在应用程序顶层把 GetMaterialApp 作为顶层,如下所示 import 'package:flutter/material.dart'; import ' ...
- 华为云MVP朱有鹏:做IoT开发乐趣无穷,年轻开发者更要厚积薄发
[摘要] 可以预见的是,AIoT会是未来一段时间主流的技术趋势方向,当前也有不少科技巨头涌入其中,蓄势待发,而5G的到来加速了AIoT产业的扩张速度,所以如华为云MVP朱有鹏所说,年轻的开发者应该要拥 ...
- GaussDB技术解读系列之应用无损透明(ALT)
本文作者 :华为云GaussDB研发高级工程师 藏琦 1.背景 GaussDB作为一款企业级分布式数据库,提供了"同城跨AZ双活.两地三中心.双集群强一致"等极致的高可用容灾能力. ...
- Python压缩JS文件,重点是 slimit
摘要:Python Web程序员必看系列,学习如何压缩 JS 代码. 本文分享自华为云社区<Python压缩JS文件,PythonWeb程序员必看系列,重点是 slimit>,作者: 梦想 ...
- 超详细教程:SpringBoot整合MybatisPlus
摘要:本文为大家带来SpringBoot整合MybatisPlus的教程,实现SpringBoot项目中依赖数据模块进行数据操作,并进行简单测试. 本文分享自华为云社区<SpringBoot整合 ...
- SQL优化老出错,那是你没弄明白MySQL解释计划
摘要:数据库的解释计划阐明了sql的执行过程,展示了执行的细节,只要根据数据库告诉我们的问题按图索骥的分析就可以. 本文分享自华为云社区<轻松搞懂mysql的执行计划,再也不怕sql优化了> ...
- 火出边际的Serverless,你居然还不了解?
摘要:图灵奖获得者David A. Patterson和Spark共同创始人Ion Stoica,在19年伯克利的会议上发布Serverless将是下一代默认的计算范式. 本文分享自华为云社区< ...
- Solon 开发进阶,四、启动参数说明
Solon 开发进阶 一.插件扩展机制 二.体外扩展机制 三.常用配置说明 四.启动参数说明 五.全局异常订阅 启动参数,在应用启动后会被静态化(为了内部更高效的利用).比如,想通过体外扩展加载配置, ...
- Win10家庭/企业/教育版均可升级到专业版
升级前,先备份现有KEY: cmd中输入 regedit 打开注册表,根据下面路径找到 BackupProductKeyDefault 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ ...
- 微信公众号短链实时阅读量、点赞数爬虫(不会Hook可用)
众所周知,微信分享的公众号分享出的一般都是短链,在这个锻炼下使用浏览器打开并不能获取微信公众的阅读量点赞数等这些信息,如图1所示. 但是实际拥有详细信息的则是这个链接下面,提取链接所需要提交的信息包括 ...
