Linux文件属性--软连接和硬链接

news2024/11/16 1:48:15

文章目录

  • 软链接
  • 硬链接
  • 软链接和硬链接的区别

软链接

软链接(Soft Link)又叫符号链接(Symbolic Link ),是linux特殊文件的一种,文件类型为l,它的数据是它所链接的文件或目录的路径。软链接可以跨磁盘和 
分区,也可以为目录建立软链接。删除源文件或修改源文件名称,就会破坏链接关系。导致根据已有的软连接文件定位不到源文件。

在这里插入图片描述
创建软链接文件: ln -s 原文件 目标文件
创建软链接目录: ln -s 原目录 目标目录
注意:创建软链接的源文件是需要存在的,要创建的软链接文件是不能存在的,是要用ln -s 命令创建的
演示文件软连接:
[root@localhost test]# cat sourceFile
测试软链接和硬链接的数据
[root@localhost test]# ln -s sourceFile softLinkFile
[root@localhost test]# ls -li
总用量 4
33590019 lrwxrwxrwx. 1 root root 10 2月 24 20:48 softLinkFile -> sourceFile
33590020 -rw-r–r–. 1 root root 37 2月 24 20:38 sourceFile
[root@localhost test]# cat softLinkFile
测试软链接和硬链接的数据
通过测试可以发现 第一列的 数字表示 的是文件的inode, softLinkFile 和 sourceFile 的 inode(index node)索引节点不一样,说明它们不是同一个文件。权限列前面的l表明了,文件类型和普通文件不一样,属于软连接文件特有的。权限列后面的1表示 文件引用次数。
演示目录软链接
[root@localhost test]# mkdir sourceDir
[root@localhost sourceDir]# touch file.txt
[root@localhost test]# ln -s sourceDir softLinkDir
[root@localhost test]# ls -li
总用量 4
33590022 lrwxrwxrwx. 1 root root 9 2月 24 21:12 softLinkDir -> sourceDir
33590012 drwxr-xr-x. 2 root root 22 2月 24 21:11 sourceDir
[root@localhost softLinkDir]# ls
file.txt
演示修改目录名称
[root@localhost test]# mv sourceDir modifysourceDir
[root@localhost test]# ll
这里出现了被软连接的源文件出现闪烁
再访问softLinkDir
[root@localhost test]# cd softLinkDir
-bash: cd: softLinkDir: 没有那个文件或目录
说明破坏了链接关系。需要重新建立链接关系
在原链接还存在的情况下,不能再创建同一目录下目标文件名称相同的链接,需要先删掉才行。
[root@localhost test]# ln -s modifysourceDir softLinkDir
ln: 无法创建符号链接"softLinkDir": 文件已存在
[root@localhost test]# rm softLinkDir
rm:是否删除符号链接 “softLinkDir”?y
再重新创建链接关系
在这里插入图片描述

硬链接

硬链接(hard link)是指通过索引节点(Inode)来进行连接。在Linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index Inode)简称Inode,即在系统中文件的编号。
文件的硬链接是一个指向inode的目录项。硬链接从表面上来说就是一个文件,但是该文件是基于原始文件创建的链接文件。硬链接与源文件指向相同的inode,因此其数据也是完全一样的。
在Linux文件系统中,多个文件名指向同一个索引节点(inode号相同)是正常且允许的。这种情况的文件就称为硬链接。
如果存在硬链接,删除原文件将不会删除文件的数据。通过硬链接仍然能够访问文件的数据。这是因为当有目录项指向inode的时候,inode会增加引用计数。通常情况下引用计数是1,当有一个硬连接时为2,再有一个硬链接的时候就变成了3。
当我们删除普通文件(无硬链接)的时候,首先会删除目录项中的内容,然后将inode的引用计数减1,如果此时inode中引用计数为0,则删除该inode,同时删除相关联的数据。如果非0,则只删除目录项,而不删除相关内容。所以,如果存在硬链接则可以正常访问文件内容。
在这里插入图片描述
数据演示:
创建硬链接文件: ln 原文件 目标文件
[root@localhost test]# ln sourceFile hardLinkFile
[root@localhost test]# ls -li
33590020 -rw-r–r–. 2 root root 37 2月 24 20:38 hardLinkFile
33590020 -rw-r–r–. 2 root root 37 2月 24 20:38 sourceFile
[root@localhost test]# cat hardLinkFile
测试软链接和硬链接的数据
通过测试发现 两者的inode是相同的,都是33590020,表明它们指向的是同一个inode表示的数据。文件的引用计数为2.表明存在一个硬链接。其实源文件也是一个硬链接文件(文件的引用计数为1),我们手动创建的硬链接文件和源文件没有什么不同。
如何查找文件的所有硬链接文件:
find . -inum inode_number #把源文件也查询到了
[root@localhost test]# find . -inum 33590020
./sourceFile
./hardLinkFile
注意:不能创建目录硬链接
[root@localhost test]# ln modifysourceDir hardLinkDir
ln: “modifysourceDir”: 不允许将硬链接指向目录
原因:在目录中除了文件相关内容外,还有一个指向父目录的目录项,"…"目录。如果我们在其它目录创建该目录的硬链接,那么该内容就会被改写,从而导致混乱。

软链接和硬链接的区别

1.  ln -s 创建软连接, ln 创建硬链接
2. 目录不能创建硬链接, 且不能跨分区系统创建
3. 软连接支持文件和目录, 且能跨分区系统, 常用
4. 硬链接文件与源文件 inode 相同, 而软连接是不同的
5. 删除软链接文件和硬链接文件, 对源文件没有任何的影响
6. 删除源文件, 软链接失效, 硬链接无影响(还可以访问内容)
7. 删除源文件和所有的硬链接文件, 整个文件会被真正的删除
8. 软链接类似于windows的快捷方式功能,常用。硬链接提供了防止文件被误删的功能。

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

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

相关文章

《数据库系统概论》学习笔记——第三章 关系数据库标准语言SQL

教材为数据库系统概论第五版(王珊) 最重量级的一章。从后续的学习,基本所有实验,大作业和考试都会涉及SQL,SQL实际上是有很多变化的,书上讲的只是最基本的(做了大作业才知道SQL能有这么多变化&a…

移动端自动化测试(一)appium环境搭建

自动化测试有主要有两个分类,接口自动化和ui自动化,ui自动化呢又分移动端的和web端的,当然还有c/s架构的,这种桌面程序应用的自动化,使用QTP,只不过现在没人做了。 web自动化呢,现在基本上都是…

k8s 强制删除 namespace

k8s 强制删除 namespace1、命名空间查看资源2、删除k8s指定命名空间3、强制删除3.1、导出命名空间jsno3.2、使用kubectl代理3.3、代理测试3.4、使用http接口进行删除1、命名空间查看资源 kubectl api-resources -o name --verbslist --namespaced | xargs -n 1 kubectl get --…

jsp运动会管理系统论文

技术:Java、JSP等摘要:运动会作为各项体育运动的基础,具有广泛的群众性。每年一度的学校运动会声势浩 大,是提高、检验学生的健康水平,开展全民健身运动的有效途径。在规模上虽然不如大型运动会,但由于比赛…

【Python数据挖掘入门】2.2文本分析-中文分词(jieba库cut方法/自定义词典load_userdict/语料库分词)

中文分词就是将一个汉字序列切分成一个一个单独的词。例如: 另外还有停用词的概念,停用词是指在数据处理时,需要过滤掉的某些字或词。 一、jieba库 安装过程见:https://blog.csdn.net/momomuabc/article/details/128198306 ji…

Docker -- Docker底层原理深度剖析

概论 谈到Docker原理,我们先来三板斧。 Linux命名空间(namespace)控制组(cgroups)联合文件系统(UnionFS) 然后我们心中要明白一件事情: 容器是一种特殊的进程。容器技术的核心功能…

vue2 diff算法

diff是什么 diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: ♥比较只会在同层级进行, 不会跨层级比较 ♥在diff比较的过程中,循环从两边向中间比较 diff 算法的在很多场景下都有应用,在 vue 中,作用于虚拟 dom…

HTML#4超链接标签,列表标签,表格标签和布局标签

一. 超链接标签介绍<a> 定义超链接,用于连接到另一个资源herf: 指定访问资源的URLtarget: 指定打开资源的方式代码<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>超链接标签</title> <…

ES6-ES13教程笔记(一)

课程目录 1、走入ES6 1.1、初识ES6 1.2 let声明变量与const声明常量 1、let声明 1、块级作用域&#xff0c;不会成为全局变量影响别人&#xff1b; 2、不允许重复声明&#xff1b; 3、变量不会提升&#xff1b;&#xff08;会存在暂时性死区&#xff09; 4、不与顶层对象挂…

模糊神经网络(FNN)的实现(Python,附源码及数据集)

文章目录一、理论基础1、模糊神经网络结构2、前向传播过程3、反向传播过程4、建模步骤二、模糊神经网络的实现1、训练过程&#xff08;FNN.py&#xff09;2、测试过程&#xff08;test.py&#xff09;3、测试结果4、参考源码及实验数据集一、理论基础 模糊神经网络&#xff08…

阿里大数据之路总结

一、数据采集 二、数据同步 2.1、数据同步方式&#xff1a; 数据同步的三种方式&#xff1a;直连方式、数据文件同步、数据库日志解析方式 关系型数据库的结构化数据&#xff1a;MYSQL、Oracle、DB2、SQL Server非关系型数据库的非结构化数据&#xff08;数据库表形式存储&am…

力扣Top100题之两数相加(Java解法)

0 题目描述 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数…

Unity IOS 通过命令行导出IPA

新建一个文件没有后缀然后输入如下内容 #!/usr/bin/env sh /Applications/Unity/Hub/Editor/2020.1.5f1c1/Unity.app/Contents/MacOS/Unity -quit -batchmode -projectPath /Users/zyt/Test -executeMethod Test.BuildEditor.BuildApp cd /Users/zyt/Test/Xcode/unity-xcode x…

Redis:SETNX解决分布式锁误删问题

Redis&#xff1a;SETNX解决分布式锁误删问题一.概述二. 分布式锁&#xff08;初级&#xff09;&#xff08;1&#xff09;锁接口&#xff08;2&#xff09;锁实现类上锁&#xff08;3&#xff09;释放锁&#xff08;4&#xff09;存在的问题三. 改进释放锁&#xff08;1&#…

linux:字符串拷贝的五种方法:使用指针下标,指针变量加偏移量,指针变量自加等

字符串数组名做函数形参&#xff0c;会退化正指针变量&#xff0c;需要使用指针变量操作字符串 代码&#xff1a; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <s…

NDlib:npm启动网络演化可视化项目(SIR模型)

文章目录安装node.js以及vue启动NDlib_viz可视化项目后续问题打开项目安装node.js以及vue 参考之前的文章Node.js、npm和vue下载及安装 启动NDlib_viz可视化项目 在github下载项目到本地 https://github.com/GiulioRossetti/NDLib_viz 将node.js路径添加到环境变量 打开命令…

令执法机构头疼的“虚拟货币犯罪”,为何链上天眼能“行”

谈到洗钱&#xff0c;你脑海中率先想到的可能是影视剧中利用赌场、收藏品拍卖等来实施犯罪。其实洗钱犯罪的花样不止于此&#xff0c;在近期热播的扫黑剧《狂飙》中&#xff0c;唐小龙为洗白“赌博资金、高利贷业务”&#xff0c;便通过“卖酒网销”的方式达成洗钱目的。 随着科…

基于SpringCloud的可靠消息最终一致性04:项目基础代码

上一节给出了项目需求和骨架代码,这一节来接着看基础代码。骨架代码和基础代码最主要的区别是:骨架代码都是数据库脚本、POM依赖文件、配置文件内容、运维脚本等,而基础代码则是和业务有关联,但并非关键代码的部分。 这些代码不用一个个地看,主要是看看结构就行。 图二十五…

python 生成唯一id的实现方式

python 生成唯一id的实现方式 常用的python生成唯一id的四种方式 1.使用UUID UUID应该是大家耳熟能详的一个东西了&#xff0c;它的全称叫 通用唯一识别码&#xff08;英語&#xff1a;Universally Unique Identifier&#xff0c;缩写&#xff1a;UUID&#xff09;生成标准3…

对比多个笔记软件后,我选择了语雀

1、前言 早在两年前&#xff0c;那是我第一次用语雀&#xff0c;第一次使用时&#xff0c;就被其用户体验所震撼。它的操作界面简洁、清晰、易于上手&#xff0c;而且功能齐全、方便实用。但是那时候除了工作的笔记&#xff0c;大部分都还在印象笔记上面&#xff0c;也有部分文…