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