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