linux系统 硬链接和软链接

背景:

当几个用户同在一个项目里工作时。经常须要共享文件。

假设一个共享文件同一时候出如今属于不同用户的不同文件夹下。工作起来就非常方便。

比如B和C文件夹下有一文件D是两者都能够訪问和改动的共享文件,这样是非常方便,但也会有一些问题,假设文件夹中包括磁盘地址,则当连接文件时。必须把C文件夹中的磁盘地址拷贝到B文件夹中,假设B或C随后又往该文件里加入内容,则新的数据块将仅仅列入进行加入工作的用户的文件夹中。

其它的用户对此改变是不知道的。违背了共享的目的。

两种方法解决这样的问题。

方法一:硬链接(实体连接或实际连接)

透过文件系统的inode 连结来产生新档名。而不是产生新档案!这样的又称 为实体链接 (hardlink).

· 每一个档案都会占用一个inode ,档案内容由 inode的记录来指向;

· 想要读取该档案。必项要经过文件夹记录的文件名称来指向到正确的inode 号码才干读取。    也就是说,事实上文件名称仅仅与文件夹有关,可是档案内容则与 inode 有关。那举想一想, 有没有可能有多个档名相应到同一个 inode 号码呢?有的!那就是 hard link 的由来。

所以简单的说:hard link 仅仅是在某个文件夹下新增一笔档名链接到某 inode 号码的关连记彔而已。
[

举个样例来说。如果我系统有个 /root/crontab 他是 /etc/crontab 的实体链接,也就是说这两个档名 连结到同一个 inode ,自然这两个文件名称的全部相关信息都会一模一样(除了文件名称之外)。实际的情况能够例如以下所看到的:


你能够发现两个档名都连结到 1912701 这个 inode 号码。所以您瞧瞧。是否档案的权限/属性全然一 样呢? 由于这两个『档名』事实上是一模一样的『档案』啦!并且你也会发现第二个字段由原本的 1 发 成 2 了。 那个字段称为『连结』。这个字段的意义为:『 有多少个档名链接到这个 inode 号码』的意思。

假设将读取到正确数据的方式画成示意图。就类似例如以下画面:


你能够透过 1 或 2 的文件夹的 inode 指定的block 找到两个不同的档名,而无论使用哪 个档名均能够指到 real 那个 inode 去读取到终于数据!那这样有优点呢?最大的优点就是『安 全』!

如同上图中, 假设你将不论什么一个『档名』删除,事实上 inode 与 block 都还是存在的!

此时你能够透过还有一个『档名』来读取到正确的档案数据喔!此外,不论你使用哪个『档名』来编辑,终于的结果都会写入到同样的 inode 与block 中。因此均能进行数据的改动。攻克了上述的问题,一般来说,使用 hard link 设定链接文件时,磁盘的空间与 inode 的数目都不会改发。我们还是由图 2.2.1 来看,由图中能够知道。 hard link 仅仅是在某个文件夹下的 block 多写入一个关连数据而已。既不会添加 inode 也不会耗用 block 数量。

Tips:

简单来讲:硬链接就是同一文件使用了多个别名(有共同的inode),是不同的文件指向同样的inode。达到文件共享的目的;

长处:安全,改动同步。删除一个硬链接文件并不影响其它有同样inode号的文件;

缺点:不能跨 Filesystem,不能 link 文件夹。

不能跨Filesystem:由图 2.2.1 其实我们也可以知道,其实 hard link 应该仅能在单一文件系统中进行的。应该是不可以跨文件系统才对!

由于图 2.2.1 就是在同一个 filesystem 上嘛!所以 hard link 是有限制的。

不能link文件夹:由于假设使用 hard link 链接到目彔时, 链接癿数据须要连同被链接目彔底下的全部数据都建立链接,举例来说,假设你要将 /etc 使用实体链接建立一个 /etc_hd 的目彔时。那举在 /etc_hd 底下的全部档名同一时候都与/etc 底下的檔名要建立 hard link 的。而不是仅连结到 /etc_hd 与/etc 而已。

而且,未来假设须要在 /etc_hd 底下简历新档案时,连带的/etc底下的数据又得要建立一次hard link,因此造成环境相当大的复杂度。所以不能link文件夹。

hard link 的制作中,事实上还是可能会改发系统的block。那就是当你新增这笔数
据却刚好将文件夹的block 填满时。就可能会新加一个block 来记录文件名称关连性。
而寻致磁盘空间的变化。只是。一般 hard link 所用掉的关连数据量非常小。所以通常
不会改发 inode 与磁盘空间的大小喔

方法二:软链接(符号连接即快捷方式)

相对于hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在建立一个独立的档案,而这个档案会让数据 的读取指向他link的那个档案的档名。由与仅仅是利用档案来做为指向的动作, 所以。当来源档被删除之后。symboliclink 的档案会『开不了』 , 会一直说『无法开启某档案!』。实际上就是找不到原始『档名』而已啦!

举例来说,我们先建立一个符号链接文件链接到 /etc/crontab 去看看:


我们能够知道两个档案指向不同的iode 号码,当然就是两个独立的档案存在! 并且连结档的重要内容就是他会写上目标档案的『文件名称』 , 你能够发现为什么上表中连结档的大小为 12 bytes 呢? 由于箭头(-->)右边的档名『 /etc/crontab』总共同拥有 12 个英文。每一个英文占用 1 个 byes , 所以档案大小就是12bytes 了。 关于上述的说明,我们以例如以下图示来解释:


由 1 号 inode 读取到连结档的内容仅有档名,依据档名链接到正确的目彔去取得目标档案的inode , 终于就能够读取到正确的数据了。你能够发现的是。假设目标档案(/etc/crontab)被删除了,那整个环节就会无法继续进行下去。所以就会产生无法透过连结档读取的问题了! 这里还是得特别留意,这个 Symbolic Link 与 Windows 的快捷方式能够给他划上等号,由 Symbolic link 所建立的档案为一个独立的新的档案。所以会占用掉 inode 与 block 喔! 由上面的说明来看。似乎 hard link 比較安全。由于即使某一个目彔下的关连数据被杀掉了, 也没有关系,仅仅要有不论什么一个目彔下存在着关连数据,那举该档案就不会不见!举上面的样例来说,我的 /etc/crontab 与 /root/crontab 指向同一个档案,假设我删除了 /etc/crontab 这个档案,该删除的动作事实上仅仅是将 /etc 目彔下关于crontab 的关连数据拿掉而已, crontab 所在的 inode 与 block 事实上都没有变动。

软链接:文件用户数据中有效的内容是还有一文件的路径名的指向。是一普通文件,数据块有点特殊。删除软链接不影响源文件。

长处:方便,能够用到文件夹。

仅仅要简单地提供一个机器的网络地址以及文件在该机器上驻留的路径。就能够连接全球不论什么地方机器上的文件。

缺点:须要额外的开销。必须读取包括路径的文件,然后要一个部分一个部分的扫描路径,直到找到inode节点,也须要额外的磁盘存取。删除源文件,链接文件为死文件。

由于硬链接应用受到限制。软链接应用较为广泛。



转载于:https://www.cnblogs.com/yutingliuyl/p/7049841.html

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

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

相关文章

jquery纯数字验证

$(document).ready(function(){ //纯数字验证,只让输入数字,比如-号等都不然输入。 $(#user-defined).unbind(); $(#user-defined).bind(keyup change,function () { $(this).val($(this).val().replace(/\D/g,));}); });转载于:https://www.cnblogs.com/kuiyeit/p/47940…

闪电模型数学_最经典的数学模型

最经典的数学模型怎样得到最好的女孩子的数学模型【关键词】怎样得到最好女孩子数学模型由于老天爷在你的生命中安排的异性并不是同时出现任你挑选,因此无论你在何时选择结婚都是有机会成本的。人们常常希望能够获得一个最可爱的人作为自己的伴侣。但是,…

最近提交一个mysql5.7的bug,提醒自己以后注意写SQL要规范

最近帮朋友提交一个mysql5.7的bug , oracle mysql 的大神还回复我 , 以后注意书写sql规范 , 潜台词是不是不要给他们增加工作量 https://bugs.mysql.com/bug.php?id86610转载于:https://www.cnblogs.com/kelvin19840813/p/7052983.html

openssl 学习之从证书中提取RSA公钥N 和 E

原文链接: http://blog.csdn.net/kkxgx/article/details/19850509 通常数字证书包含很多信息,其中N和E值即我们称为的公钥。如何从PEM 或者DER格式的证书中提出证书呢?下面给出代码实现从PEM和DER编码的证书中提出N、E。 [cpp] view plaincopy #include …

获得汉字字符个数

//获得汉字字符个数function ChineseWordsCount(text:string):Integer;var i,sum,e,c,t: Integer;begin Result:0; c : 0; sum : Length(text); if Sum0 then exit; for i : 0 to sum do begin if Ord(text[i]) > 127 then begin Inc(c); end; end;…

2020湖南省技能竞赛获奖名单_2020年湖南省职业院校技能竞赛学院获奖情况通报...

由湖南省教育厅、湖南省人力资源和社会保障厅、湖南省农业农村厅等30个单位联合举办的2020年湖南省职业院校技能竞赛于2019年12月28日已经圆满结束所有竞赛项目,我院选派了190名选手参加了园林景观设计与施工、鸡新城疫抗体水平测定、集成电路开发及应用、农机维修、…

Web browser的发展演变

我们每天都在使用着浏览器,每个人使用的浏览器各不一样。在这个科技飞速发展的时代,一个游览器能否站住脚跟取决于使用者的数量,看用户是否喜欢这个产品,听取用户们的意见来改善。 我们这个年龄的人最初用到的浏览器肯定是IE浏览器…

nodejs简单层级结构配置文件

在NodeJS中使用配置文件,有几种比较不错的方案:第一种:文件格式使用json是毋容置疑的好方案。格式标准,易于理解,文件内容读取到内存之后,使用JSON的标准分析函数即可得到配置项。第二种:将配置…

C++语言基础(1)-命名空间

一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,当有两个人都同时定义了一个名字相同的全局变量或函数的时候,若是把他们的代码整合在一块编译,此时编译器就会提示变量或函数重复定义,C为了解决这个问…

matlab 散点图 线性回归图_线性回归思路梳理

作者:夏雨骄阳 封面:自己想吧1简单线性回归1根据研究目的确定因变量和自变量。2判断有无异常值。通过绘制散点图直观观察;亦可通过线性回归的【统计】→【个案诊断】→【所有个案】进行分析,若标准残差超过[-3,3],则…

物联网云端设计分析

物联网是世界信息产业发展的新浪潮,智能手表、智能手环、智能灯等物联网产品不断的改变着人们的生活方式。那这些产品是怎么设计出来的呢?其实物联网操作系统不光由本地物联网设备上的操作系统组成,还包括提供物联网终端设备支持的云端架构。…

PHP使用文件流下载文件方法(附:解决下载文件内容乱码问题)

记得高中时候做过游戏私服,那时候的游戏主页是用PHP写的,因为文件很固定,客户端,登陆器和一些小工具,文件数目也不是很多,所以都是直接把下载链接写死的,直接链接到本地服务器的文件目录&#x…

Redis和Memcached的区别

2019独角兽企业重金招聘Python工程师标准>>> Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较: Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作…

hbase hmaster一会就没了_浅析HBase

一、HBase简介1、Apache HBase™是Hadoop数据库,是一个分布式,可扩展的大数据存储。2、当您需要对大数据进行随机,实时读/写访问时,请使用Apache HBase™。 该项目的目标是托管非常大的表( 数十亿的行*百万的列 &#…

【Android工具】DES终结者加密时报——AES加密演算法

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992在前面的两篇文章中。我们介绍了DES算法,3DES算法以及他们的Android程序实现,并研究了怎样才干实现不同平台下加密算法的一致性。只是话说起来,DES算法是在1976年被美国的国…

MATLAB 迭代法解方程

MATLAB 迭代法解方程 1、代码如下: %%牛顿迭代法解方程 function xnewton_interation(fun,dfun,x0,EPS) %简单牛顿迭代法%fun即迭代函数,dfun即迭代函数的一阶导数,x0为迭代初值,EPS为精度x1x0-fun(x0)/dfun(x0); %牛顿迭代公…

【12期 3月期刊 自荐】

12期的小伙伴看过来~因为网易博客的网络问题。我们把负责收集自荐的博客写到了CSDN里,希望大家在此篇博客的评论里,积极自荐自己的博客。 为了提高大家的积极性,我们评选优秀博客的方法升级为大家自荐博客,博客委员会当月负责人进…

超微服务器电源短接启动图解_教你一招,让你的电脑启动速度秒杀别人

win10快速启动其实是电脑的一种休眠模式,它将电脑中的一些本该关闭的文件保存到hiberfil.sys的磁盘文件中,这样打开电脑时就达到了快速开机的目的。接下来,我就将win10设置快速启动的方法分享给你们win10系统功能非常强大,最让大家…

MATLAB 求离散信号卷积

MATLAB 求离散信号卷积 代码如下: function [C,Ck] dt_convolution_advance(A,B,Ak,Bk) % dt_convolution_advance 计算离散信号卷积 % A 输入信号 % B 输入信号 % Ak 输入信号A下标 % Bk 输入信号B下标 % C 输出信号 % Ck 输出信号C下标 % 计算输入信号A&…

Oracle data type number

Oracle numberNUMBER [ (p [, s]) ]Number having precision p and scale s. Theprecision p can range from 1 to 38. The scale s can range from -84 to 127. Bothprecision and scale are in decimal digits. A NUMBER value requires from 1 to 22bytes.scale是可选的。SQ…