Linux之软连接和硬链接



1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

2.通过实验加深理解
[oracle@Linux]$ touch f1          #创建一个测试文件f1
[oracle@Linux]$ ln f1 f2          #创建f1的一个硬连接文件f2
[oracle@Linux]$ ln -s f1 f3       #创建f1的一个符号连接文件f3
[oracle@Linux]$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。

[oracle@Linux]$ echo "I am f1 file" >>f1
[oracle@Linux]$ cat f1
I am f1 file
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
I am f1 file
[oracle@Linux]$ rm -f f1
[oracle@Linux]$ cat f2
I am f1 file
[oracle@Linux]$ cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效

3.总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 实现图片切成九宫格控件~

WPF开发者QQ群: 340500857由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS:有更好的方式欢迎推荐。接着上一篇倒计时控件01—代码如下一、创建 CropControl.cs代码如下。(修改RowColumn “…

使用Visio进行UML建模

资料地址:使用Visio进行UML建模-http://www.qdgw.edu.cn/zhuantiweb/jpkc/2009/rjkf/xmwd/Visio_UmlModel.htm转载于:https://www.cnblogs.com/svennee/p/4075700.html

GCT之数学公式(三角函数)

转载于:https://www.cnblogs.com/jyh317/p/3386598.html

C++基础知识总结(一)

C程序以.cpp作为文件扩展名。 C标准输入输出库的头文件是iostream&#xff0c;在程序中使用&#xff1a;#include <iostream>//包含头文件 C使用命名空间&#xff1a;using namespace std; 对象的定义及初始化&#xff1a;int z(0)//等价int z0&#xff1b; 用关键字cons…

Android安全与逆向之Java虚拟机和Dalvik虚拟机的区别

Google于2007年底正式发布了Android SDK, 作为 Android系统的重要特性&#xff0c;Dalvik虚拟机也第一次进入了人们的视野。它对内存的高效使用&#xff0c;和在低速CPU上表现出的高性能&#xff0c;确实令人刮目相看。 依赖于底层Posix兼容的操作系统&#xff0c;它可以简单的…

软件与硬件我该选哪个_MacBook Air 和 MacBook Pro 该选哪个……?

一个多月前&#xff0c;Apple 发布了 2019 款 MacBook Air 和 MacBook Pro&#xff0c;经过这一次的更新之后&#xff0c;MacBook 产品线总算变得更加清晰了&#xff0c;同时也减少了之前存在的价格和定位产生冲突的现象。不过从购买决策来看&#xff0c;我发现还是有些问题难倒…

只要300页!火遍全网的NET6+linux知识手册!拿走不谢!

这是微软公司基于最新的.net 6编写&#xff0c;循序渐进地对.net6/C#10进行讲解。对于零基础可以作为.net的快速入门教材&#xff0c;对于高级程序员而言&#xff0c;这也是你的进阶之路&#xff01;NO.1资料介绍该手册,全面的介绍.net6和c#的新特性&#xff0c;看完这个资料&a…

Linux0.11内核剖析--内核体系结构

一个完整可用的操作系统主要由 4 部分组成&#xff1a;硬件、操作系统内核、操作系统服务和用户应用程序&#xff0c;如下图所示&#xff1a; 用户应用程序是指那些字处理程序、 Internet 浏览器程序或用户自行编制的各种应用程序&#xff1b; 操作系统服务程序是指那些向用户所…

centos 6安装报错

Missing ISO 9660 imageThe installer has tried to mount image # 1. but cannot find it on the hard drive.Please copy this image to the drive and click Retry. Click Exit to abort the installation. 这个是安装过程中你没有把iso镜像拷贝到你的U盘所导致&#xff01;…

ubuntu上最使用jni最简单易懂的例子

第一步:爆结果照,让你有坚持下去的信心 二、NDK解释 NDK全称:Native Development Kit。 NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。 NDK集成了交叉编译器,并提供了相应的m…

buck变换器设计matlab_一种用于Boost PFC变换器的改进关断时间控制策略

随着我国工业的发展&#xff0c;越来越多的非线性负荷接入电网&#xff0c;各种换流设备的使用&#xff0c;使电网的电压波形发生畸变&#xff0c;造成电能质量下降&#xff0c;威胁电网和各种用电设备的安全、经济运行。为了能够确保电网安全&#xff0c;研制出了各种PFC变换器…

你初吻啥时候没有的​?​

1 &#xff1f;&#xff1f;&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 世界上最难受的三件事&#xff08;via.惨绿少年金三坨&#xff0c;侵删&#xff09;▼3 漏网之鱼▼4 有哪里不太对劲&#xff1f;&#xff08;素材来源网络&#xff0c;侵删…

乡亲们,我们创建了 Dapr 中文交流频道

我们创建了 Dapr 中文交流 QQ 频道&#xff0c;欢迎大家加入&#xff01;加入方式在文章最后一节。为什么要创建频道&#xff1f; 解决什么问题**专业性&#xff0c;“你可以在我们群里面钓鱼&#xff0c;因为都是水”** 你肯定加过非常多的这种叫什么技术交流群。你会发现这个…

Maven搭建SpringMVC+Mybatis项目详解【转】

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 最近比较闲&#xff0c;复习搭建一下项目&#xff0c;这次主要使用SpringSpringMVCMybatis。项目持久层使用Mybatis3&#xff0c;控制层使用SpringMVC4.1&#xff0c;使用Spring4.1管理控制器&#xff0c;数据库…

IOS 代码块

1.关系式表示 <returnType>(^BlockName)(list of arguments)^(arguments){body;}; 转载于:https://www.cnblogs.com/keithmoring/p/4077686.html

web前端url传递值 js加密解密

一&#xff1a;Js的Url中传递中文参数乱码问题&#xff0c;重点&#xff1a;encodeURI编码&#xff0c;decodeURI解码&#xff1a; 1.传参页面Javascript代码&#xff1a; <script type”text/javascript”>// <![CDATA[ function send(){ var url "test01.html…

Linux下最简单的修改文件名后缀的命令行技巧

在linux上面一直没有找到好的修改文件的方法&#xff0c;今天找到了一个 mv file.{cpp,c} 上面的意思就是说把文件file结尾为cpp改成c文件格式 看下图 &#xfeff;&#xfeff;

python123可以复制粘贴吗_使用win32com和python复制和粘贴隔离

有没有办法使用python和win32com进行复制和粘贴,以便python脚本可以在后台运行而不会弄乱“用户”复制和粘贴功能&#xff1f; from win32com.client import Dispatch import win32com.client xlApp Dispatch("Excel.Application") xlWb xlApp.Workbooks.Open(file…