微信真的傻乎乎的同一個文件存儲多份?非也,采用「硬鏈接」(Hard Link) 機制無需占用多倍硬盤空間
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
我發(fā)現這可能是一個非常典型的關于微信存儲被誤解的問題,尤其是還算懂一點點技術的網友,就更會不加思索,以訛傳訛,然后誤導更多人。 微博網友給我的留言,微信公眾號收到的留言,都有不少人提到這個問題,既然這么典型,那就有必要說一下這個經典的微信「文件重復存儲多份」的問題。 類似的問題,我以前其實寫過科普文做過說明,不過時間久了,我早就忘了,而且這次又稍微有點不同。 網友典型的疑問是這樣的:微信為什么傻乎乎的一個文件存儲多份?難道他們不知道校驗一下文件 MD5 嗎?發(fā)現重復就不要存了嘛。 咦,你說,如果普通網友都能明白這么簡單的問題,微信那幫開發(fā)的同學能傻到不知道嗎?這不符合常理吧? 有人補刀說:我有證據。貼出類似圖一的信息,說:你看,我轉發(fā)一個文件到不同的群,然后呢,你看,操作系統里就出來了多個重復的文件。 算不算有圖有真相? 我相信,這時候,如果這位朋友去檢查一下每個文件的詳細大小,會發(fā)現他們文件大小也是一樣的。 你看,這難道還不是重復存儲了?連證明圖都拿出來了,你服不服? 眼見,不一定為實。 眼見,不一定為實。 眼見,不一定為實。 我問微信的開發(fā)團隊,你們咋回事啊,還打算要年終獎了不?之前沒有重復存儲文件,這難道后續(xù)的版本引入了新的 Bug? 還真沒有重復存儲。 微信在 Windows 上的實現,是通過「硬鏈接」(Hard Link) 的機制。其實只要對操作系統知識有基礎的網友,一看到「硬鏈接」這個關鍵詞,可能就會恍然大悟。但也不是全部,很多科班畢業(yè)的網友居然也沒思考過這個問題,還繼續(xù)硬杠。 但是,畢竟,99.99% 的網友沒有一點操作系統(OS)的基本概念。 那么,怎么證明這些不同名字的文件其實是同一個文件呢?現在 Windows 系統自帶一個命令行工具,叫 fsutil,用這個命令行工具探測一下這幾個不同名字的文件,會發(fā)現文件 ID 是相同的。如果是不同的文件,文件 ID(File ID)是不同的。 背景知識:創(chuàng)建一個已有文件的硬鏈接,并不占用雙倍的物理存儲空間。盡管,你查看這個新創(chuàng)建的文件大小,和原文件一樣大。 補充,Android 上實現機制并不一樣。但是 iOS / macOS / Windows 是類似的。 但是略懂一點技術的人可能還會提問:我記得操作系統里有軟鏈接(Soft Link) 的啊,微信存儲重復文件為啥不用軟鏈接? 這題我會。 答:如果用軟鏈接的話,萬一這第一份文件刪除了,后面的文件就都不可訪問了。 到這里我可以做一下基本結論: 網友所認為的「微信為什么傻乎乎的同一個文件存儲多份」其實是一種誤解。微信在這地方的技術實現并沒有太大問題。 但是,吹毛求疵一點的說,微信開發(fā)團隊的同學依然有一定責任。為什么這么說呢?既然,你用的是硬鏈接的方式,那么,文件名字能不能不要太隨意,如果新創(chuàng)建的文件加上一個后綴,比如:
是不是就會讓一些略懂技術的網友,增加一些了解呢?但這個細節(jié),我就不懂實現起來有多復雜了。 該文章在 2024/4/19 16:18:06 編輯過 |
關鍵字查詢
相關文章
正在查詢... |