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 发布!

相关推荐

  1. Linux 文件连接:符号

    2024-04-13 18:06:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 18:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 18:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 18:06:03       87 阅读
  4. Python语言-面向对象

    2024-04-13 18:06:03       96 阅读

热门阅读

  1. Web服务器原理

    2024-04-13 18:06:03       34 阅读
  2. C#:求两个整数的最大值

    2024-04-13 18:06:03       36 阅读
  3. ChatGPT论文写作指南:写出引人注目的论文

    2024-04-13 18:06:03       37 阅读
  4. python语言之round(num, n)小数四舍五入

    2024-04-13 18:06:03       40 阅读
  5. 实用工具系列-git常用命令

    2024-04-13 18:06:03       45 阅读
  6. 为何要使用 CSS 通用选择器

    2024-04-13 18:06:03       37 阅读
  7. 蓝桥杯省赛最后一天冲刺!!

    2024-04-13 18:06:03       38 阅读
  8. 在页面上清除多行数据

    2024-04-13 18:06:03       33 阅读
  9. isinstance函数详解

    2024-04-13 18:06:03       33 阅读
  10. LeetCode 17.电话号码的字母组合

    2024-04-13 18:06:03       37 阅读
  11. ActiveMQ消息中间件面试专题

    2024-04-13 18:06:03       34 阅读