LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

微信真的傻乎乎的同一个文件存储多份?非也,采用「硬链接」(Hard Link) 机制无需占用多倍硬盘空间

admin
2024年4月19日 16:18 本文热度 23

我发现这可能是一个非常典型的关于微信存储被误解的问题,尤其是还算懂一点点技术的网友,就更会不加思索,以讹传讹,然后误导更多人。

微博网友给我的留言,微信公众号收到的留言,都有不少人提到这个问题,既然这么典型,那就有必要说一下这个经典的微信「文件重复存储多份」的问题。

类似的问题,我以前其实写过科普文做过说明,不过时间久了,我早就忘了,而且这次又稍微有点不同。

网友典型的疑问是这样的:微信为什么傻乎乎的一个文件存储多份?难道他们不知道校验一下文件 MD5 吗?发现重复就不要存了嘛。

咦,你说,如果普通网友都能明白这么简单的问题,微信那帮开发的同学能傻到不知道吗?这不符合常理吧?

有人补刀说:我有证据。贴出类似图一的信息,说:你看,我转发一个文件到不同的群,然后呢,你看,操作系统里就出来了多个重复的文件。

算不算有图有真相?

我相信,这时候,如果这位朋友去检查一下每个文件的详细大小,会发现他们文件大小也是一样的。

你看,这难道还不是重复存储了?连证明图都拿出来了,你服不服?

眼见,不一定为实。 眼见,不一定为实。 眼见,不一定为实。

我问微信的开发团队,你们咋回事啊,还打算要年终奖了不?之前没有重复存储文件,这难道后续的版本引入了新的 Bug?

还真没有重复存储。

微信在 Windows 上的实现,是通过「硬链接」(Hard Link) 的机制。其实只要对操作系统知识有基础的网友,一看到「硬链接」这个关键词,可能就会恍然大悟。但也不是全部,很多科班毕业的网友居然也没思考过这个问题,还继续硬杠。

但是,毕竟,99.99% 的网友没有一点操作系统(OS)的基本概念。

那么,怎么证明这些不同名字的文件其实是同一个文件呢?现在 Windows 系统自带一个命令行工具,叫 fsutil,用这个命令行工具探测一下这几个不同名字的文件,会发现文件 ID 是相同的。如果是不同的文件,文件 ID(File ID)是不同的。

背景知识:创建一个已有文件的硬链接,并不占用双倍的物理存储空间。尽管,你查看这个新创建的文件大小,和原文件一样大。

补充,Android 上实现机制并不一样。但是 iOS / macOS / Windows 是类似的。

但是略懂一点技术的人可能还会提问:我记得操作系统里有软链接(Soft Link) 的啊,微信存储重复文件为啥不用软链接?

这题我会。

答:如果用软链接的话,万一这第一份文件删除了,后面的文件就都不可访问了。

到这里我可以做一下基本结论:

网友所认为的「微信为什么傻乎乎的同一个文件存储多份」其实是一种误解。微信在这地方的技术实现并没有太大问题。

但是,吹毛求疵一点的说,微信开发团队的同学依然有一定责任。为什么这么说呢?既然,你用的是硬链接的方式,那么,文件名字能不能不要太随意,如果新创建的文件加上一个后缀,比如:

  • 测试.txt 

  • 测试_lnk0.txt 

  • 测试_lnk1.txt

是不是就会让一些略懂技术的网友,增加一些了解呢?但这个细节,我就不懂实现起来有多复杂了。


该文章在 2024/4/19 16:18:06 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved