首页 > 其他分享 >软链接、硬链接

软链接、硬链接

时间:2023-10-26 09:57:51浏览次数:32  
标签:文件 ln 创建 链接 原文件 目录

https://mp.weixin.qq.com/s?__biz=MjM5Nzk1NzI2MQ==&mid=2649353722&idx=2&sn=31acc34f567c9fa3ced7cd451e98441a&chksm=becf561889b8df0ef65558380f8e198cc1a7a1998c8d803be9be2755714263fe4a4653953ea1&scene=27

什么是链接

链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件
ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件。
我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
Linux下的链接文件有点类似于Windows的快捷方式,但又不完全一样。链接文件有两种:一种是硬链接,另一种是符号链接(又称软链接)。下面我给大家说说它们两者之间的区别。

软链接

又被叫为符号链接(symbolic Link),它包含了到原文件的路径信息。
(1)软链接有自己的文件属性及权限等;
(2)可对不存在的文件或目录创建软链接;
(3)软链接可交叉文件系统;
(4)软链接可对文件或目录创建;
(5)创建软链接时,链接计数 i_nlink 不会增加;
(6)删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
创建软链接
ln -s file link
image

硬链接

是对原文件起了一个别名。
(1)文件有相同的 inode 及 data block;
(2)只能对已存在的文件进行创建;
(3)不能交叉文件系统进行硬链接的创建;
(4)不能对目录进行创建,只可对文件创建;
(5)删除一个硬链接文件并不影响其他有相同inode 号的文件。
ln file link
image

软链接和硬链接的区别

首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。
那区别在哪呢?在底层原理上
image

本质区别

硬链接:本质是同一个文件
软链接:本质不是同一个文件

跨设备区别

硬链接:不支持
软链接:支持

inode区别

硬链接:相同
软链接:不同

链接数

硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少
软链接:创建或删除,链接数不会变化

文件夹

硬链接:不支持
软链接:支持

相对路径

硬链接:原始文件相对路径是相对于当前工作目录
软链接:原始文件的相对路径是相对于链接文件的相对路径

删除源文件

硬链接:只是链接数减一,但链接文件的访问不受影响
软链接:链接文件将无法访问

文件类型

硬链接:和原文件相同
软链接:链接文件,和原文件无关

文件大小

硬链接:和原文件相同
软链接:原文件的路径的长度

总结

硬链接:

  • 与普通文件没什么不同,inode 都指向同一个文件在硬盘中的区块
  • 以文件副本的形式存在,但不占用实际空间
  • 硬链接只有在同一个文件系统中才能创建

软链接:

  • 保存了其代表的文件的绝对路径,是另外一种文件,在硬盘上有独立的区块
  • 访问时替换自身路径
  • 软链接可以对目录进行链接
  • 软链接可以对一个不存在的文件名进行链接
  • 软链接可以跨文件系统

这里有两点要注意:
(1)ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。
(2)ln的链接又分软链接和硬链接两种
软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间。
硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

标签:文件,ln,创建,链接,原文件,目录
From: https://www.cnblogs.com/sggggr/p/17788712.html

相关文章

  • 各种链接
    强化学习网站http://rail.eecs.berkeley.edu/deeprlcourse/https://spinningup.openai.com/en/latest/......
  • 2023各版本JDK下载链接
    JavaArchive|OracleJavaArchive|Oraclehttps://www.oracle.com/java/technologies/downloads/archive/ ......
  • Kettle链接SqlServer+Jdk8 问题解决
     这两天要弄个ldap对接,客户端server2016,数据库那边winserver2008,数据库也是2008最开是链接出现类似这样的,更换了链接mssql的Jar版本,从12换到了6的老版本,没用。  后来更改网上提示的  C:\ProgramFiles\Java\jre-1.8\lib\security\java.security文件jdk.tls.......
  • iOS配置通用链接后,分享页面,打开微信后,一直显示连接中
    一开始发现的问题是  apple-app-site-association  这个json里面的bundleid错了但是修正之后仍然显示连接中: 微信开放平台后台显示通用效验通过微信自检代码 checkUniversalLinkReady 检测失败 后来领导说上线之后可能就好了,果然,上线了,分享就没问题了......
  • C++的编译链接与在vs中build提速
    通过gcc或msvc,clang等编译器编译出来的C++源文件是.o文件。在windows上也就是PE文件,linux为ELF文件,在这一步中,调用其它代码文件中的函数的函数地址是未知的(00000),等到链接之后才会替换掉函数地址的linux,windows可执行文件(ELF、PE)C++是如何编译的C/C++编译过程主要分为4个过程......
  • # 由于我只能访问hugginface网站,但是不能下载里面的数据,所以编写下面的代码,获取从hugg
    #由于我只能访问hugginface网站,但是不能下载里面的数据,所以编写下面的代码,获取从huggingface下载数据的链接。在从其它路径下载数据。#获取huggingface某个模型所有要下载数据的命令行。#可以把结果复制到autodl里,进行执行。速度可以达到13M/s#然后在autodl里进行训练推理......
  • typeOrm 教程 创建链接数据库
    实体User:import{Entity,PrimaryGeneratedColumn,Column}from"typeorm"@Entity()exportclassUser{@PrimaryGeneratedColumn()id:number@Column()firstName:string@Column()lastName:string@Column()......
  • 苏格拉底问答、实践过程截图、遇到问题解决问题截图,代码链接
    苏格拉底问答实践过程遇到问题及解决代码......
  • 程序员的自我修养: 链接、装载与库pdf电子版 俞甲子​​ / ​石凡​ / ​潘爱民​
    程序员的自我修养:链接、装载与库pdf电子版作者: 俞甲子 / 石凡 / 潘爱民出版年: 2009-4ISBN: 9787121085116连接提取码:4jaf解决了一些问题,比如程序的生成规则,重定位机制和动态链接机制,以及回答了我一个问题,就是我在实现操作系统时,遇到的莫名其妙的调用。实际上是为了支......
  • excel表格怎么设置数据超链接?
     在Excel表格中,可以设置超链接来快速导航到其他单元格、工作表、文件、网页等。下面我将详细介绍如何设置数据超链接。1.在Excel表格中选择要添加超链接的单元格或文本。2.使用鼠标右键点击选定的单元格,然后选择“超链接”选项,或者在菜单栏中选择“插入”->“超链接”。3.......