28 番外3 文件硬链接简介

番外3 文件硬链接简介

你有没有想过一个并不引人瞩目的问题:

为什么我的文件图标会出现在电脑的特定位置呢?我什么我双击一下桌面上的一个word文件,计算机就能读取并打开这个文件呢?这个文件在哪里呢?


这个文件当然存储在我们的计算机硬盘里.

把硬盘比做一张白纸,那么这个.docx文件就是这张白纸上所写的一大串01011101010......数据.我们把这一堆数据组成的集合叫做一个数据块.

因此,在本质上,我们双击一个docx文件,实际上是命令计算机读取硬盘上的这一大块数据块.


那么,你有没有想过,为什么我们双击一个文件的标志的时候,计算机就知道他应该读取硬盘上哪里的数据快呢?

这是因为这个标志,指向了硬盘上的这一块区域.

*"指向"*这个词很重要.

它就像一个箭头,直接指向了硬盘上属于它的那部分数据块.计算机正是循着他的箭头,找到了那个数据块,进而读取数据内容.

在这里,我们暂且把文件在电脑上的标志叫做"图标".

40ab757ae5b24131d08c02c4c716d2bf.png


我们继续思考:

图标和数据块的关系一定是一一对应的吗?

事实上,可以不是.


一个数据块,可以有多个图标与之对应.

一个图标不可以对应多个数据块.这会导致操作系统的混乱.

(这符合函数的定义.一个y可以对应多个x值,但是,一个x不可以对应多个y值.)

在这里,我们给我们所谓的"图标"一个新的名字.

这就是:

硬链接


一个数据块可以有多个图标.这些标志都是这个数据快的硬链接.

同一数据块所有的硬链接的地位是一样的.因为他们对应的是同一个数据块.

e91406b4209f2935f88d48c98c7c6368.png


现在请你思考一下:什么叫做文件的删除?什么叫做文件的擦除?

有些人说,放入回收站就是删除.有人说,清空回收站才是删除.

事实上,清空回收站才是删除文件的操作.放入回收站只是一种文件移动而已.

回收站

_回收站_只是一个文件夹而已.我们把文件放入回收站,事实上是把文件放入了这个文件夹里.在每一个磁盘分区里,都有一个文件夹名字叫做"Recycle.bin".这个文件夹里放的就是回收站里的文件.

我们可以在C盘D盘的根目录里看一下,但是需要在文件资源管理器的 选项 里显示被操作系统保护的文件.

当然,C盘里的文件一定是放入C盘里的Recycle.bin,D盘的文件放入D盘的Recycle.bin.

所以,移入回收站的操作实际上不是真正删除文件,而是一种文件移动操作.


当我们清空回收站的时候,文件才被真正的删除了.

请注意,我是用的是"删除"而不是"擦除".

擦除

何为擦除?擦除实际是在删除之后发生的.我们在清空回收站之后,这个文件的数据块并没有立刻从我们的磁盘里消失.

操作系统只不过是在我们删除文件对应的数据块上打了一个"标签"而已.

被打上标签的数据块,可以被随意写上新的数据,新的1010001010......

这种行为,叫做覆写.

当这个数据块完全被新的数据覆写后,我们说,这个数据被彻底擦除了.这时,这个数据块无法被恢复了.

理解了这点,我们就很容易明白,市场上的数据恢复软件是如何做到恢复数据的了.他们只不过是找到了没有被覆写或完全覆写的数据块,然后找回他们的硬链接.这样,一个文件就被恢复了.

因此,完全擦除的文件无法被恢复.


所以,硬链接具体有什么用呢?我们如何给一个文件创建多个硬链接呢?

硬链接的作用:

1.备份文件.

设想一个场景.你有一个自己写的100万字的网络小说.你视它如珍宝.有一天,你不小心把他删除了.

你说,哦,完了,我的小说没有了,我不想活了......

如果你的这个小说有3个硬链接呢?不小心删了一个,你满不在乎:没关系,我还有两个硬链接呢!你又不小心删了一个:还好,我还有一个他的硬链接.然后,有一天,你有不小心删了一个.然后,"我又不想活了......"

这只是开个玩笑.但是我们通过上述例子可以明白,硬链接是一种极好的文件备份方法.

我们知道,复制粘贴的文件副本也是一种备份的方法.那么,硬链接相对于他们有什么优点呢?

(1)无论给一个数据块创建多少个硬链接,它只占一分磁盘空间.

我给一个100GB的文件创建了100个硬链接.查看这个文件所在的文件夹的大小时,你可能吓了一跳:10000GB......

但是,查看文件资源管理器里的分区剩余大小时,你会发现没有变化,仍然只占了100GB.

(2)文件更新是绝对同步的.如果是复制粘贴的方式备份文件,那么很有可能不会时刻保持备份文件的更新时同步进行的.然而,由于硬链接所指向的是同一个数据块,我们点击一个硬链接并修改这个数据块的时候,其他硬链接同步变化.

所以,一个数据块有多个硬链接就好像我们让一个数据块在这个电脑里有多个藏身之处一样.只有把一个数据块的所有硬链接全都删除,这个数据块才能真正的被操作系统打上标签,允许被覆写.

这也就导致了硬链接的一个问题:硬链接的清除问题.

有的时候,我们可能忘记了我们到底创建了多少个硬链接,删除了一个,以为全删除完了,实际上还有一个硬链接存在于电脑里.这会导致无法真正释放磁盘空间.

但是,用对了工具,我们可以大大降低这种风险.

如果我们不使用任何第三方工具,我们只能通过cmd命令创建硬链接,而且产生的硬连接的图标与一般图标无差异,不容易识别.

我推荐的创建硬链接的最好的工具是:link shell extension.

直连下载地址:

https://schinagl.priv.at/nt/hardlinkshellext/HardLinkShellExt_X64.exe

官网:

https://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#contact

软件体积极小,安装极快,安装后提示重启文件资源管理器.然后,你的右键菜单例会多出一个选项:选择原连接点.

选择一个文件为原链接点后,到另外一个地方,再次右键,点击 创建为...->硬链接,即可创建硬链接.

还有一个特殊福利:他能把拥有两个或两个以上硬链接的文件图标左下角加上一个红色的箭头.这方便了我们识别硬链接.

最后,有一点需要注意:硬链接只能在同一分区里创建!!!无法跨分区创建硬链接!!!这也是硬链接最大的缺点!!!

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

问题汇总

一、TCP的粘包和拆包问题? TCP在发送和接受数据的时候,有一个滑动窗口来控制接受数据的大小,这个滑动窗口你就可以理解为一个缓冲区的大小。缓冲区满了就会把数据发送,数据包的大小是不固定的,有时候比缓冲区大有时候…

蓝桥杯简单STL

目录 vector vector定义 vector访问 常用函数 size() ​编辑 push_back(num) pop_back() clear 迭代器(iterator) 迭代器定义 遍历数组示例 insert(it, element) erase(it) 标准模板库--STL,它包含了多种预定义的容器、算法和迭代器&…

【深度学习实战(3)】打印自己模型的推理帧率

一、FPS(每秒传输帧数-Frames Per Second) FPS就是目标网络每秒可以处理(检测)多少帧(多少张图片),FPS简单来理解就是图像的刷新频率,也就是每秒多少帧,假设目标检测网络处理1帧要0.02s,此时FPS就是1/0.0250 其中Processing tim…

Unity之C#面试题(二)

内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity之C#面试题(二) TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不断探索 TechX —— 心探索、心进取&a…

5分钟手把手教你 Guitar Pro v8.1.1 Build 17 中文完整激活版(附教程) 64位

吉他爱好者必备神器:Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及,越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中,Guitar Pro因其强大的功能和易用的界面备受推崇…

电子章是怎么盖上去的?

电子章是怎么盖上去的呢,本文介绍利e-章宝(易友EU3000智能盖章软件)盖电子骑缝章的方法。如下: 1.在软件中导入待批量盖章的PDF文件 如下图,在“待盖章PDF文件”区域,点“添加”,导入待盖章PDF文件。 如上图&#xf…

Postman接口测试 - 全局变量/接口关联/加密/解密

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 全局变量和环境变量 全局变量:在postman全局生效的变量,全局唯一 环境变…

腾讯云服务器搭建网站教程,新手跟着流程一步步操作

使用腾讯云服务器搭建网站全流程,包括轻量应用服务器和云服务器CVM建站教程,轻量可以使用应用镜像一键建站,云服务器CVM可以通过安装宝塔面板的方式来搭建网站,腾讯云服务器网txyfwq.com整理使用腾讯云服务器建站教程,…

mybatis 枚举值,映射为枚举类型,使用typehandle

要在存储到 MySQL 时使用枚举的代码值,然后在读取时将其转换为枚举对象,你可以使用 MyBatis 的类型处理器(TypeHandler)来实现这一点。在你的情况下,你已经有了一个 PersonIdTypeHandler 类,这是一个类型处理器,用于处理 PersonIdType 枚举类型。 确保 PersonIdTypeHan…

基于Springboot+Vue的Java项目-在线视频教育平台系统(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &am…

TiDB存储引擎TiKV揭秘

目录 一、TiKV 介绍 二、RocksDB 三、TiKV 与 RocksDB 架构 3.1 用户数据保存 3.2 TiKV 中 Region 一、TiKV 介绍 TiKV 是一个分布式事务型的键值数据库,提供了满足 ACID 约束的分布式事务接口,并且通过 Raft 协议保证了多副本数据一致性以及高可用。…

量子信息产业生态研究(一):关于《量子技术公司营销指南(2023)》的讨论

写在前面。量子行业媒体量子内参(Quantum Insider)编制的《量子技术公司营销指南》是一本实用的英文手册,它旨在帮助量子科技公司建立有效的营销策略,同时了解如何将自己定位成各自的行业专家。本文对这篇指南的主要内容进行了翻译…