一種針對無損壓縮文件的數(shù)據(jù)去重方法
【專利摘要】本發(fā)明提出一種針對無損壓縮文件的數(shù)據(jù)去重方法。該方法利用壓縮文件本身存在的數(shù)據(jù)完整性校驗碼,如循環(huán)冗余校驗碼(CRC校驗碼),作為文件簽名(File Signature)來識別重復(fù)的壓縮文件。在沖突率的要求限制下,也可以提取其他文件屬性,如文件長度,將文件長度和校驗碼一起作為文件簽名來識別重復(fù)文件。若壓縮文件本身不存在校驗碼,則通過計算提取校驗碼或者使用哈希算法計算出哈希值作為文件簽名進(jìn)行重復(fù)文件的識別。該方法還可以與已有的重復(fù)數(shù)據(jù)刪除技術(shù)結(jié)合起來,填補(bǔ)無法對壓縮文件進(jìn)行數(shù)據(jù)去重的技術(shù)空白。
【專利說明】
一種針對無損壓縮文件的數(shù)據(jù)去重方法
技術(shù)領(lǐng)域
[0001]本發(fā)明屬于計算機(jī)信息存儲技術(shù)領(lǐng)域,具體涉及一種針對無損壓縮文件的數(shù)據(jù)去重方法。
【背景技術(shù)】
[0002]在信息存儲技術(shù)領(lǐng)域,數(shù)據(jù)壓縮是用于縮減數(shù)據(jù)量的常用手段。數(shù)據(jù)壓縮包含無損壓縮和有損壓縮。無損壓縮主要通過在一定的范圍內(nèi)統(tǒng)計原始數(shù)據(jù)的冗余信息,利用冗余統(tǒng)計信息對原始數(shù)據(jù)進(jìn)行重新編碼,去除冗余數(shù)據(jù),以此達(dá)到減少數(shù)據(jù)量的目的。不同的無損壓縮算法有著不同的編碼方法。無損壓縮廣泛應(yīng)用于文本數(shù)據(jù)、程序和特殊應(yīng)用場合的圖像數(shù)據(jù)等需要精確存儲數(shù)據(jù)的壓縮。有損壓縮方法則利用了人類視覺、聽覺對圖像、聲音中的某些頻率成分不敏感的特性,允許壓縮的過程中損失一定的信息。有損壓縮廣泛應(yīng)用于語音、圖像和視頻數(shù)據(jù)的壓縮。
[0003]隨著數(shù)據(jù)量的爆炸性增長,除了數(shù)據(jù)壓縮之外,重復(fù)數(shù)據(jù)刪除技術(shù)在最近十年內(nèi)躍然成為另一種縮減數(shù)據(jù)量的有力工具。重復(fù)數(shù)據(jù)刪除技術(shù)是指對數(shù)據(jù)流進(jìn)行分塊,通過發(fā)現(xiàn)并去除冗余數(shù)據(jù)塊來達(dá)到縮減數(shù)據(jù)量的目的。一般來說,數(shù)據(jù)塊的平均大小在4K至32K,甚至更大。重復(fù)數(shù)據(jù)刪除技術(shù)是一種新興的無損壓縮方法,主要應(yīng)用在大規(guī)模存儲系統(tǒng),彌補(bǔ)了傳統(tǒng)的無損數(shù)據(jù)壓縮方法無法在數(shù)據(jù)塊級別去除冗余數(shù)據(jù)的缺陷。
[0004]在現(xiàn)有的存儲系統(tǒng)中,重復(fù)數(shù)據(jù)刪除已被視為一個常規(guī)性的功能部件出現(xiàn)存儲系統(tǒng)中。但是,對于壓縮文件(即采用傳統(tǒng)的壓縮方法壓縮過的文件),重復(fù)數(shù)據(jù)刪除并不能發(fā)現(xiàn)其潛在的冗余數(shù)據(jù)。這主要是因為相同或相似的文件,通過采用不同的壓縮算法進(jìn)行壓縮之后,會得到與原始文件完全不同的數(shù)據(jù)流,導(dǎo)致重復(fù)數(shù)據(jù)刪除技術(shù)無法識別其潛在的冗余數(shù)據(jù)。而在存儲系統(tǒng)中,為了縮減數(shù)據(jù)量,很多文件都采用壓縮文件的形式進(jìn)行傳輸和存儲,無法識別壓縮文件潛在的冗余數(shù)據(jù)是重復(fù)數(shù)據(jù)刪除技術(shù)的一大缺陷。本發(fā)明提出一種針對無損壓縮文件的數(shù)據(jù)去重方法,該方法能有效地識別和去除壓縮文件中的冗余數(shù)據(jù),填補(bǔ)了無法對壓縮文件進(jìn)行數(shù)據(jù)去重的技術(shù)空白。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出一種針對無損壓縮文件的數(shù)據(jù)去重方法。該方法利用壓縮文件本身存在的數(shù)據(jù)完整性校驗碼,如循環(huán)冗余校驗碼(CRC校驗碼),作為文件簽名(File Signature)來識別重復(fù)的壓縮文件,若兩個文件的校驗碼相同,則認(rèn)為這兩個壓縮文件相同,以此去除重復(fù)文件。在沖突率的要求限制下,也可以提取其他文件屬性,如文件長度,將文件長度和校驗碼一起作為文件簽名來識別重復(fù)文件。若壓縮文件本身不存在校驗碼,則通過計算提取校驗碼或者使用哈希算法計算出哈希值作為文件簽名進(jìn)行重復(fù)文件的識別。同時,該方法還可以與已有的重復(fù)數(shù)據(jù)刪除技術(shù)結(jié)合起來,加強(qiáng)重復(fù)數(shù)據(jù)刪除技術(shù)的去重效果,填補(bǔ)了無法對壓縮文件進(jìn)行數(shù)據(jù)去重的技術(shù)空白。
[0006]本發(fā)明提出一種針對無損壓縮文件的數(shù)據(jù)去重方法。具體步驟為:
[0007](I)提取壓縮包里每個壓縮文件的文件簽名(File Signature),具體步驟為:
[0008](1.1)提取每個壓縮文件現(xiàn)有的數(shù)據(jù)完整性校驗碼,如循環(huán)冗余校驗碼(CRC校驗碼),作為文件簽名。在沖突率的要求限制下,也可以提取其他文件屬性,如文件長度,將文件長度和校驗碼一起作為文件簽名。
[0009](1.2)若壓縮文件本身不存在校驗碼,則計算壓縮文件(壓縮之前的原始文件)的校驗碼作為文件簽名。
[0010](1.3)除了使用校驗碼之外,也可以采用哈希算法,如MD5,SHA-1等,計算壓縮文件(壓縮之前的原始文件)的哈希值作為文件簽名。
[0011](2)若存在兩個文件的文件簽名相同,則標(biāo)記為重復(fù)文件,否則標(biāo)記為非重復(fù)文件。具體步驟為:
[0012](2.1)在文件簽名庫(File Signature store)里查找是否具有(I)得出的文件簽名。
[0013](2.2)若在文件簽名庫里找到(I)得到的文件簽名,則標(biāo)識(I)中的對應(yīng)的文件為重復(fù)文件,不需要存儲或傳輸該文件內(nèi)容。
[0014](2.3)若在文件簽名庫里沒有找到(I)得到的文件簽名,則標(biāo)識(I)中的對應(yīng)的文件為非重復(fù)文件,并將(I)得到的文件簽名存儲至文件簽名庫。
[0015](2.4)若和已有的重復(fù)數(shù)據(jù)刪除方法相結(jié)合,則(2.1)、(2.2)和(2.3)可以使用已有的重復(fù)數(shù)據(jù)刪除方法的文件簽名庫。
[0016](3)去除(2)中識別出的重復(fù)文件,構(gòu)建新的壓縮包以及壓縮包譜。其中新壓縮包是指在(I)所指的壓縮包中去除(2.2)識別出的重復(fù)文件之后重新構(gòu)建的新壓縮包。壓縮包譜則描述(I)所指的壓縮包由哪些文件組成,方便以后恢復(fù)(I)所指的壓縮包。
[0017](4)若和系統(tǒng)已有的重復(fù)數(shù)據(jù)刪除方法相結(jié)合,則轉(zhuǎn)入已有的重復(fù)數(shù)據(jù)刪除步驟,否則,去重過程結(jié)束。
【附圖說明】
[0018]圖1為本發(fā)明的模塊結(jié)構(gòu)示意圖;
[0019]圖2為本發(fā)明的流程示意圖;
【具體實施方式】
[0020]本發(fā)明涉及的主體有客戶端和存儲服務(wù)器。【具體實施方式】包括兩種:I)獨立處理模式:客戶端向存儲服務(wù)器傳送壓縮文件,存儲服務(wù)器對壓縮文件進(jìn)行處理。2)協(xié)作模式:客戶端和存儲服務(wù)器互相協(xié)作對壓縮文件進(jìn)行處理。
[0021]圖1為本發(fā)明的模塊結(jié)構(gòu)示意圖。主要包含五部分:文件簽名提取模塊101,重復(fù)文件識別模塊102,文件簽名庫管理模塊103,壓縮包和壓縮包譜構(gòu)建模塊104,重復(fù)數(shù)據(jù)刪除模塊105。文件簽名提取模塊101用于提取壓縮包里每個壓縮文件的文件簽名;重復(fù)文件識別模塊102通過咨詢文件簽名庫,查找出重復(fù)的文件;文件簽名庫管理模塊103用于管理存儲文件簽名的文件簽名庫;壓縮包和壓縮包譜構(gòu)建模塊用于構(gòu)建新的不包含重復(fù)文件的壓縮包以及對應(yīng)的壓縮包譜。重復(fù)數(shù)據(jù)刪除模塊105是指系統(tǒng)已有的用于刪除重復(fù)數(shù)據(jù)的重復(fù)數(shù)據(jù)刪除模塊。在獨立處理模式的實施方式中,上述所有的模塊均存在存儲服務(wù)器上;而在協(xié)作處理模式中,文件簽名提取模塊101與壓縮包和壓縮包譜構(gòu)建模塊104在客戶端上,重復(fù)文件識別模塊102與文件簽名庫管理模塊103在存儲服務(wù)器上,重復(fù)數(shù)據(jù)刪除模塊則根據(jù)系統(tǒng)已有的方式既可以存在客戶端上,也可以存在存儲服務(wù)器上。
[0022]圖2為本發(fā)明的流程示意圖,其中使用循壞冗余校驗碼(CRC校驗碼)作為壓縮文件的數(shù)據(jù)完整性校驗碼。具體為:
[0023](I)讀取壓縮包文件;
[0024](2)查看壓縮包里的一個壓縮文件,文件簽名提取模塊101提取該壓縮文件的文件簽名,具體步驟為:
[0025](2.1)查看該壓縮文件是否存在CRC校驗碼,若存在CRC校驗碼,則采用該CRC校驗碼作為文件簽名;若不存在該校驗碼,則重新計算該壓縮文件(壓縮之前的原始文件)的CRC校驗碼作為文件簽名。另外,在沖突率的要求限制下,也可以提取其他文件屬性,如文件長度,將文件長度和CRC校驗碼一起作為文件簽名;(2.2)若與已有的重復(fù)數(shù)據(jù)刪除方法相結(jié)合,也可以采用哈希算法計算文件哈希值作為該壓縮文件的文件簽名;
[0026](3)重復(fù)文件識別模塊102在文件簽名庫中查找步驟(2)得到的文件簽名,若找到相同的文件簽名,則標(biāo)記步驟(2)查看的壓縮文件為重復(fù)文件;否則,標(biāo)記步驟(2)查看的壓縮文件為非重復(fù)文件;
[0027](4)文件簽名庫管理模塊103將步驟(3)標(biāo)記的非重復(fù)文件的文件簽名寫入文件簽名庫中;
[0028](5)查看該壓縮包是否還有未識別的壓縮文件,若有,則轉(zhuǎn)步驟(2),否則進(jìn)入下一步驟;
[0029](6)壓縮包和壓縮包譜構(gòu)建模塊104重新構(gòu)建壓縮包和對應(yīng)的壓縮包譜,去除步驟
(3)標(biāo)記的重復(fù)文件;
[0030](7)若系統(tǒng)已有重復(fù)數(shù)據(jù)刪除方法,已有的重復(fù)數(shù)據(jù)刪除模塊105將處理(6)得到的新壓縮包和壓縮包譜;否則,針對壓縮文件的去重過程結(jié)束。
【主權(quán)項】
1.本發(fā)明提出一種針對無損壓縮文件的數(shù)據(jù)去重方法。具體步驟為: (1)提取壓縮包里每個壓縮文件的文件簽名(FileSignature),具體步驟為: (1.1)提取每個壓縮文件現(xiàn)有的數(shù)據(jù)完整性校驗碼,如循環(huán)冗余校驗碼(CRC校驗碼),作為文件簽名。在沖突率的要求限制下,也可以提取其他文件屬性,如文件長度,將文件長度和校驗碼一起作為文件簽名。 (1.2)若壓縮文件本身不存在校驗碼,則計算壓縮文件(壓縮之前的原始文件)的校驗碼作為文件簽名。 (1.3)除了使用校驗碼之外,也可以采用哈希算法,如MD5,SHA-1等,計算壓縮文件(壓縮之前的原始文件)的哈希值作為文件簽名。 (2)若存在兩個文件的文件簽名相同,則標(biāo)記為重復(fù)文件,否則標(biāo)記為非重復(fù)文件。具體步驟為: (2.1)在文件簽名庫(File Signature store)里查找是否具有(I)得出的文件簽名。 (2.2)若在文件簽名庫里找到(I)得到的文件簽名,則標(biāo)識(I)中的對應(yīng)的文件為重復(fù)文件,不需要存儲或傳輸該文件內(nèi)容。 (2.3)若在文件簽名庫里沒有找到(I)得到的文件簽名,則標(biāo)識(I)中的對應(yīng)的文件為非重復(fù)文件,并將(I)得到的文件簽名存儲至文件簽名庫。 (2.4)若和已有的重復(fù)數(shù)據(jù)刪除方法相結(jié)合,則(2.1)、(2.2)和(2.3)可以使用已有的重復(fù)數(shù)據(jù)刪除方法的文件簽名庫。 (3)去除(2)中識別出的重復(fù)文件,構(gòu)建新的壓縮包以及壓縮包譜。其中新壓縮包是指在(I)所指的壓縮包中去除(2.2)識別出的重復(fù)文件之后重新構(gòu)建的新壓縮包。壓縮包譜則描述(I)所指的壓縮包由哪些文件組成,方便以后恢復(fù)(I)所指的壓縮包。 (4)若和系統(tǒng)已有的重復(fù)數(shù)據(jù)刪除方法相結(jié)合,則轉(zhuǎn)入已有的重復(fù)數(shù)據(jù)刪除步驟,否貝IJ,去重過程結(jié)束。
【文檔編號】G06F17/30GK105912622SQ201610213219
【公開日】2016年8月31日
【申請日】2016年4月5日
【發(fā)明人】譚玉娟, 晏志超
【申請人】重慶大學(xué)