首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >符号链接和硬链接有什么区别?

符号链接和硬链接有什么区别?

提问于 2017-12-18 04:53:24
回答 2关注 0查看 1.7K

最近我在面试时被问到这个问题。我诚实地说,我知道一个符号链接是如何运作的,以及如何建立一个符号链接,但是不明白硬链接的使用,以及它与符号链接的区别。

回答 2

人生的旅途

发布于 2017-12-18 05:40:11

首先要弄清楚,在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。

一、硬链接

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。语法:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
 ln [options] existingfile newfile
代码语言:txt
AI代码解释
复制
ln[options] existingfile-list directory

用法: 第一种:为”existingfile”创建硬链接,文件名为”newfile”。第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。常用可选[options] –f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

下面举一些例子:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
 $ ls –il
代码语言:txt
AI代码解释
复制
13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2
代码语言:txt
AI代码解释
复制
$ ln file2 file2hard
代码语言:txt
AI代码解释
复制
$ ls –il
代码语言:txt
AI代码解释
复制
13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard

注意在创建链接前,file1 显示的链接数目为1,创建链接后(1)file1和file1hard的链接数目都变为2;(2) file1和file1hard在inode号是一样的(3) file1和file1hard显示的文件大小也是一样。可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。如下图,你可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,

链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。当前目录逻辑结构:(不好意思图没有显示出来)。

还可以在不同目录,但同一文件系统中建立文件的硬链接。设file1、file2在目录/home/longcheng/dir1中,下面的命令,在/home/longcheng中建立file2的硬链接。

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
 ln file2 /home/longcheng/file2hard

下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接

代码语言:txt
AI代码解释
复制
 $mkdir dir2
代码语言:txt
AI代码解释
复制
$ln /home/longcheng/dir1/* /home/longcheng/dir2

如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在不同文件系统的文件间建立链接(2)只有超级用户才可以为目录创建硬链接。虽然很多树上说root用户可以创建,但是笔者在学习过程中发现即使是root用户也不能创建,我的系统是Redhat,内核2.4、2.6都试过,在其他系统中不知道是不是可以。

二、软链接(符号链接)

符号链接是对一个文件的间接指针。硬链接直接指向文件的i节点。

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。

建立软链接,只要在ln后面加上选项 –s,下面举个例子

代码语言:txt
AI代码解释
复制
 $ ls -il
代码语言:txt
AI代码解释
复制
13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
代码语言:txt
AI代码解释
复制
$ln –s file1 file1soft
代码语言:txt
AI代码解释
复制
$ls -il
代码语言:txt
AI代码解释
复制
13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
代码语言:txt
AI代码解释
复制
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
代码语言:txt
AI代码解释
复制
13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。

当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。

御姐万岁

发布于 2017-12-18 05:39:24

Linux 文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接。

硬链接 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

符号链接 是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。它们会指向文件系统中并不存在的一个位置。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建符号链接。

符号链接与硬链接有什么区别?

简单的说:硬连接记录的是目标的 inode,符号连接记录的是目标的 path。

软连接就像是快捷方式,而硬连接就像是备份!符号连接可以做跨分区的 link;而 硬连接由于 inode 的缘故,只能在本分区中做 link.所以,符号连接的使用频率要高的多。

和开发者交流更多问题细节吧,去 写回答
相关文章
Windows mklink 符号链接和硬链接
mklink /h aa.cpp ClearSeveLib.cpp 未深入研究, 两种方法都是可以将一个文件, 放到多个目录, 其中一个文件改变了内容, 另一个文件内容也会改变 aa.cpp 是要创建的位置, 该文件不能存在.
ClearSeve
2022/02/11
1.5K0
硬链接与符号链接
【5】+5120M 表示这个主分区大小是5120M = 5G, 我们把这个10G的磁盘先拿出来5G作为第一个主分区
书唐瑞
2022/06/02
2.3K0
硬链接与符号链接
获奖+答案公布:Linux符号链接和硬链接的小测试
请问接下来执行“cat b”输出什么?执行"cat c”输出什么?解释为什么!详细论述其中关于inode等的变化。
Linux阅码场
2019/10/08
1K0
让 Windows 实现文件镜像:符号链接、硬链接、软链接
之前有想过,将文件放入 Onedrive 中备份,但是 Onedrive 备份只能实现固定的几个文件夹,而不是用户自己选择的文件夹。如果要将文件全部存入 Onedrive 能备份的文件夹中,或者是将文件直接放入 Onedrive 的文件夹,这样十分的不优雅。
阿龙w
2023/10/18
6.1K0
让 Windows 实现文件镜像:符号链接、硬链接、软链接
我对Linux里的符号链接(软链接)和硬链接的认识
首先ln --help 可以看到默认创建的链接是硬链接。若是要创建符号链接则需要使用-s 参数
huolong
2023/05/16
7460
我对Linux里的符号链接(软链接)和硬链接的认识
软链接和硬链接
软链接-符号链接:相当于windows的快捷方式。 创建命令: ln s 文件名 软链接的名字 ln-link s-soft 特点: 1.在linux中,软链接文件的颜色为浅蓝色。 2.软链接的大小为原文件的文件名大小,即路径长度。 3.软链接仅可在当前路径下使用,即和原文件在同一目录下。创建时最好给出原文件的绝对路径。 4.目录也可创建软链接,方法同上。
lexingsen
2022/05/06
2.1K0
软链接和硬链接
软链接和硬链接
文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。每个扇区储存512字节(相当于0.5KB)。
opencode
2022/12/26
1.9K0
软链接和硬链接
Windows 中的硬链接、软链接、符号链接、快捷方式
Windows支持 4 种 ”链接” 机制,分别是shortcut(快捷方式)、hard link(硬链接)、junction point(软链接)、symbolic link(符号链接)。本文记录相关内容。 Windows 中不同链接支持的场景各不相同 shortcut shortcut 中文名 快捷方式 存在方式 以.lnk文件方式存在,适用于Explorer等应用程序。非NTFS内置机制,从Win95开始得到支持。FAT32支持。 适用范围 同时适用于文件、目录,只能使用绝对路径。 使用限制
为为为什么
2022/08/10
8.7K0
Windows 中的硬链接、软链接、符号链接、快捷方式
软链接和硬链接
版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.net/zy010101/article/details/90609090
zy010101
2019/07/02
1.3K0
软链接和硬链接
一起来做题:你真地懂符号链接和硬链接吗?
题目: ---- 第1步:创建目录a,在里面创建1 2 3三个文件 mkdir a cd a touch 1 2 3 2. 回退到a的上一级目录,然后执行命令: ln -s a b ln b c 3. 执行ls -li a b c命令 问:看出来a,b,c的inode谁和谁一样,谁和谁不一样?为什么? 4. 问: 执行unlink b命令会怎样?剩下的a,c情况如何?为什么? 执行unlink c命令会怎样?剩下的a情况如何?为什么? 执行unlink a命令会怎样?为什么?
Linux阅码场
2019/10/08
4420
一起来做题:你真地懂符号链接和硬链接吗?
linux软链接和硬链接
硬链接相当于一个灾备系统,数据存放在两处,与复制不同的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外一处数据如果被删除了,不会影响到另一处的数据.
阳光岛主
2019/02/19
8.7K0
解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
2018-03-08 12:23
walterlv
2018/09/18
32.7K0
LINUX软链接和硬链接
1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索 引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户 就可以建立硬连接到重要文件,以防止“
wangxl
2018/03/07
8.1K0
区块链智能资产的“硬链接”思考
比特币网络把比特币管理得如此之好,能否用类似的机制来管理其他资产呢? 作者 | 孟岩 最近,区块链概念得到政府、行业的高度关注和支持,但在现实世界的资产管理中,其还鲜有亮点的项目。本文作者从智能资产流
区块链大本营
2018/05/10
1.1K0
区块链智能资产的“硬链接”思考
作者 | 孟岩 责编 | 景琦 比特币网络是一个去中心化的数字资产管理平台,它管理的数字资产就是比特币本身。因为比特币网络把比特币管理得如此之好,很多人就想到,能否用类似的机制来管理其他的资产呢?这个想法,几乎是每个学习区块链的人能够想到的第一类应用场景。不需要中介,不需要复杂的智能合约,也不需要更多的技术创新,只需要将比特币已经验证的成熟技术搬到其他领域,就可以立刻打造一个去中心化、安全、防篡改、可追溯的智能资产管理平台,这太具诱惑力了。 在这里就不列举什么食品药品防伪溯源之类人人都可以想到的场景,就说现
区块链大本营
2018/05/10
1K0
Linux文件的软链接和硬链接
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
恋喵大鲤鱼
2018/08/03
7.8K0
彻底明白Linux硬链接和软链接
什么是硬链接和软链接,要想知道什么是硬链接和软链接的话,让我带你研究。看完这篇文章,让你彻底明白什么是硬链接,什么是软链接!!!
混说Linux
2022/07/14
5K0
彻底明白Linux硬链接和软链接
Linux中的链接文件_软链接和硬链接
一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。以下是详细介绍: 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块领域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode
Zoctopus
2018/06/04
6.6K0
软链接和硬链接 之间的区别
软硬链接的区别: 1)默认不带参数情况下,ln命令创建的是硬链接。 (ln -s 创建软链接) 2)硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号与源文件不同。 3)ln命令不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到。 4)删除软链接文件,对源文件及硬链接文件无任何影响; 5)删除文件的硬链接文件,对源文件及软链接文件无任何影响; 6)删除链接文件的原文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状); 7)同时删除原文件及其硬链接
西湖醋鱼
2020/12/30
1.4K0
软链接和硬链接 之间的区别
点击加载更多

相似问题

使用PowerShell创建硬链接和软链接

23.5K

存储桶里面的文件,地址和链接有什么不同?

05

专线接入与 IPSec VPN 连接有什么区别?

1243

消息队列概述文档链接有两个?

2348

请问一下这个模板链接有没有?

011
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
到家集团 | 技术VP擅长5个领域
腾讯云TDP | KOL擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文