dedup util文件打包工具
dedup util是一款開源的輕量級(jí)文件打包工具,它基于塊級(jí)的重復(fù)數(shù)據(jù)刪除技術(shù),可以有效縮減數(shù)據(jù)容量,節(jié)省用戶存儲(chǔ)空間。該工具生成的數(shù)據(jù)包內(nèi)部數(shù)據(jù)部局(layout)如下:
--------------------------------------------------
| header | unique block data | file metadata |
--------------------------------------------------
數(shù)據(jù)包由三部分組成:文件頭(header)、唯一數(shù)據(jù)塊集(unique block data)和邏輯文件元數(shù)據(jù)(file metadata)。其中,header為一個(gè)結(jié)構(gòu)體,定義了數(shù)據(jù)塊大小、唯一數(shù)據(jù)塊數(shù)量、數(shù)據(jù)塊ID大小、包中文件數(shù)量、元數(shù)據(jù)在包中的位置等元信息。文件頭后緊接就存儲(chǔ)著所有唯一的數(shù)據(jù)塊,大小和數(shù)量由文件頭中元信息指示。在數(shù)據(jù)塊之后,就是數(shù)據(jù)包中文件的邏輯表示元數(shù)據(jù),由多個(gè)實(shí)體組成,結(jié)構(gòu)如下所示,一個(gè)實(shí)體表示一個(gè)文件。解包時(shí)根據(jù)文件的元數(shù)據(jù),逐一提取數(shù)據(jù)塊,還原出當(dāng)初的物理文件。
邏輯文件的元數(shù)據(jù)表示:
-----------------------------------------------------------------
| entry header | pathname | entry data | last block data |
-----------------------------------------------------------------
邏輯文件的實(shí)體頭中記錄著文件名長(zhǎng)度、數(shù)據(jù)塊數(shù)量、數(shù)據(jù)塊ID大小和最后一個(gè)數(shù)據(jù)塊大小等信息。緊接著是文件名數(shù)據(jù),長(zhǎng)度在實(shí)體頭中定義。文件名數(shù)據(jù)之后,存儲(chǔ)著一組唯一數(shù)據(jù)塊的編號(hào),編號(hào)與唯一數(shù)據(jù)塊集中的數(shù)據(jù)塊一一對(duì)應(yīng)。最后存儲(chǔ)著文件最后一個(gè)數(shù)據(jù)塊,由于這個(gè)數(shù)據(jù)塊大小通常比正常數(shù)據(jù)塊小,重復(fù)概率非常小,因此單獨(dú)保存。
dedup util目前處于pre-alpha開發(fā)階段,支持文件打包、解包、追加文件、刪除文件、羅列包中文件等功能。初步的測(cè)試結(jié)果顯示,即使在不明確數(shù)據(jù)是否具備較高重復(fù)率的情況下,dedup技術(shù)也能較明顯地減少數(shù)據(jù)包的數(shù)據(jù)量,產(chǎn)生的數(shù)據(jù)包比Tar工具的要小。
