專利名稱:一種重復(fù)數(shù)據(jù)的壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計算機重復(fù)數(shù)據(jù)的壓縮方法,尤其是涉及一種在計算機數(shù)據(jù)存儲、歸檔及 備份中提高重復(fù)數(shù)據(jù)壓縮率的方法。
背景技術(shù):
目前,隨著我國信息化程度的提高,越來越多的企事業(yè)單位和組織利用建立本單位計算機 局域網(wǎng)絡(luò)來使其工作人員更好地共享信息與協(xié)同工作,然而,利用網(wǎng)絡(luò)辦公環(huán)境,常常會使 內(nèi)容相同的一份電子數(shù)據(jù)或以相同或以不同的文件名或文件形式(如郵件、工作文檔等)在 多臺計算機中保存,且一個局域網(wǎng)內(nèi)的所有客戶端的數(shù)據(jù)通常會定期地在服務(wù)器中集中歸檔、 存儲或備份。這樣在歸檔、存儲或備份操作時就可能產(chǎn)生大量完全重復(fù)的數(shù)據(jù)。為了解決計算機重復(fù)數(shù)據(jù)的壓縮問題,現(xiàn)有技術(shù)通常為以下兩種一種是基于LZ系列的壓縮算法。LZ系列壓縮算法首先使用字典法對相同短語進行壓縮, 壓縮后,再使用哈夫曼編碼將壓縮的內(nèi)容以最短字節(jié)表示。基于LZ系列的壓縮算法為通用無 損壓縮。對于大部分未壓縮的數(shù)據(jù),可以獲得2至8倍的壓縮比,但該算法由于采用字典法 對短語進行壓縮,短語取用長度較短,如LZ系列中的LZ77僅采用23個位來表示短語距離和 短語長度,其能夠判斷的重復(fù)數(shù)據(jù)的長度是非常有限的,因而,較短的短語對于網(wǎng)絡(luò)系統(tǒng)中 的相同或相似文件的重復(fù)數(shù)據(jù)壓縮性能并不佳。另一種是將待處理數(shù)據(jù)的內(nèi)容分割為很多長度固定的數(shù)據(jù)塊,并為每一數(shù)據(jù)塊生成一個相 應(yīng)的標(biāo)識符,在保存數(shù)據(jù)塊內(nèi)容的同時保存每一塊數(shù)據(jù)的標(biāo)識符。在判斷待處理數(shù)據(jù)是否為 重復(fù)數(shù)據(jù)時,解決方法是通過在服務(wù)器的標(biāo)識符數(shù)據(jù)庫中搜索是否存在相同的標(biāo)識符如果 存在,則判斷其為重復(fù)的數(shù)據(jù);如果不存在,則判斷其為不重復(fù)的數(shù)據(jù)。然而,這種技術(shù)的不足之處在于,由于不同類型文件的儲存結(jié)構(gòu)是完全不同的,例如文本文件的存儲結(jié)構(gòu)是以 原內(nèi)容方式保存,字處理器軟件生成的文件則是以對象的半結(jié)構(gòu)化方式保存,而數(shù)據(jù)庫系統(tǒng) 生成的數(shù)據(jù)庫文件則以塊狀的結(jié)構(gòu)化方式保存,如果一律采用固定的長度分割待處理數(shù)據(jù), 而不考慮不同類型數(shù)據(jù)的存儲結(jié)構(gòu)差異,則在判斷分割后的數(shù)據(jù)塊是否為重復(fù)數(shù)據(jù)時,常常 會出現(xiàn)識別率不高的問題,從而導(dǎo)致重復(fù)數(shù)據(jù)的壓縮率不甚理想。發(fā)明內(nèi)容為了在更短的時間內(nèi)提高計算機重復(fù)數(shù)據(jù)的壓縮率問題,本發(fā)明的技術(shù)方案要點通過以下步驟實現(xiàn)首先通過比較相同類型的同名文件發(fā)生變化時的異同情況,以獲得能體現(xiàn)變化規(guī)律的數(shù)據(jù) 塊變化表;隨后通過分析程序分析同類型文件的所有數(shù)據(jù)塊變化表獲得該類型文件的最佳分 割方式,并將其保存到類型分割信息庫;最后,在進行數(shù)據(jù)壓縮時,本發(fā)明將首先判斷待壓縮文件的類型,然后根據(jù)該文件類型從類型分割信息庫中調(diào)出該類型文件的i佳分割方式,并將待壓縮文件按上述最佳分割方式分割為若干數(shù)據(jù)塊,并在存儲器中査找是否存在與分割 后的數(shù)據(jù)塊相同的數(shù)據(jù)塊存在相同數(shù)據(jù)塊,則該數(shù)據(jù)塊為重復(fù)數(shù)據(jù);不存在相同數(shù)據(jù)塊,則該數(shù)據(jù)塊為不重復(fù)的數(shù)據(jù)。對于重復(fù)數(shù)據(jù),不將其保存到儲存器中,而是采用指針方式指 向原已保存的相同數(shù)據(jù)塊;對于不重復(fù)數(shù)據(jù),則將其保存到存儲器中。與現(xiàn)有技術(shù)相比,本發(fā)明通過比較同類型數(shù)據(jù)中的同名文件的變化規(guī)律而獲得體現(xiàn)該變化 規(guī)律的相應(yīng)數(shù)據(jù)塊變化表,并通過分析數(shù)據(jù)塊變化表求得該類型文件的最佳分割方式,利用 該最佳分割方式能極大地提高重復(fù)數(shù)據(jù)的識別率及壓縮率;此外,由于最佳分割方式是已經(jīng) 存儲在類型分割信息庫中的數(shù)據(jù),所以,在進行重復(fù)數(shù)據(jù)壓縮時,只需要調(diào)用該最佳分割方 式分割數(shù)據(jù),并按照分割后的數(shù)據(jù)塊與存儲器中的數(shù)據(jù)塊作比較來判斷其是否為重復(fù)數(shù)據(jù), 這樣,每一數(shù)據(jù)塊只需要判斷一次就能得到其是否為重復(fù)數(shù)據(jù),并據(jù)此進行壓縮操作,因而 該技術(shù)能最大限度地縮短重復(fù)數(shù)據(jù)的壓縮時間。
圖1為比較某類型同名文件差異的流程2為某類型文件的一個數(shù)據(jù)塊變化表的示意3為求得某類型文件的最佳分割方式的流程4為求得某類型文件已知長度部分的最佳分割方式的示意5為求得某類型文件未知長度部分的最佳分割方式的示意6為更新某類型文件的最佳分割方式的示意7為調(diào)用某類型文件的最佳分割方式壓縮該類型文件的重復(fù)數(shù)據(jù)的流程圖具體實施例下面結(jié)合附圖對本發(fā)明作進一步的描述。圖1是一個比較某類型同名文件差異的流程圖,簡稱比較程序流程圖。圖中所示的步驟用 于比較某類型的同名文件發(fā)生變化時的變化規(guī)律,即哪些部分發(fā)生了變化,哪些部分沒有發(fā) 生變化,且將這樣的變化規(guī)律表現(xiàn)為一個數(shù)據(jù)塊變化表,同時在目標(biāo)計算機的存儲器上指定 一個存儲區(qū)域,用于保存被比較的文件及相應(yīng)的數(shù)據(jù)塊變化表。圖1所示的比較程序的具體步驟如下對于待比較的文件,首先獲得該文件的文件類型,文件類型可通過文件擴展名或文件中的 文件控制信息來判斷;然后,在目標(biāo)計算機的存儲區(qū)域中査找是否存在與待比較文件同名的文件如果不存在同 名文件,直接復(fù)制文件到目標(biāo)計算機上的存儲區(qū)域內(nèi)并返回;如果存在同名文件,則在源計算機獲得待比較文件的文件屬性,通過文件長度、最后修改 時間、歸檔位等文件屬性與目標(biāo)計算機存儲區(qū)域內(nèi)已保存的同名文件進行比較,若比較的結(jié) 果相同,表示該文件沒有變化,在此情況下直接返回;若比較結(jié)果不相同,表示該文件發(fā)生了變化,在此情況下,則比較待比較文件與其同名文 件的差異,比較差異的算法可以是Rabin指紋算法、Delta差異算法、TTTD算法等。比較差異后的結(jié)果保存為一個如圖2所示的數(shù)據(jù)塊變化表,同時將待比較文件復(fù)制到目標(biāo) 計算機存儲區(qū)域內(nèi),替換已存在的與其同名的文件。由于比較程序定期運行,故當(dāng)其運行時,若待比較文件再次發(fā)生變化時,則按照圖1所述的方法再次比較其變化規(guī)律并生成相應(yīng)的新的數(shù)據(jù)塊變化表。圖2為按照圖1所述的方法比較某類型文件的兩個同名文件之異同后產(chǎn)生的一個數(shù)據(jù)塊 變化表的示意圖。圖2中,0表示兩個同名文件的開始位置,其后的數(shù)值表示待比較文件與其同名文件產(chǎn) 生差異的起點與終點位置;矩形圖中的內(nèi)容表示就兩個相臨數(shù)值之間得部分,待比較文件與 其同名文件是否相同,例如,在[0,1024)之間的這部分,待處理文件與其同名文件是相同的; 而[1024, 2048)之間的這部分,二者是不相同的,即有差異的,這種差異可能是由于修改了 文件內(nèi)容或者新增了內(nèi)容。這樣,在比較任意兩個同名文件時,其異同部分都可以用如圖2 所示的數(shù)據(jù)塊變化表來描述,且由于每比較一次某類型文件的兩個同名文件都會產(chǎn)生一個數(shù) 據(jù)塊變化表。這樣,在目標(biāo)計算機的存儲區(qū)域內(nèi)將會保存若干個某類型文件的數(shù)據(jù)庫變化表, 這些數(shù)據(jù)塊變化表將在隨后的分析程序中被用來求得該類型文件的最佳分割方式。圖3為通過分析某類型文件的所有數(shù)據(jù)塊變化表求得該類型文件的最佳分割方式的流程 圖,簡稱分析程序流程圖。最佳分割方式,是指將某類型的文件按某種方式分割為若干數(shù)據(jù) 塊,且利用分割后的數(shù)據(jù)塊可最大程度地識別同類型文件中與其相同的數(shù)據(jù)塊(即重復(fù)數(shù)據(jù)), 從而達到在更短的時間內(nèi)提高重復(fù)數(shù)據(jù)壓縮率的效果。分析程序可在比較程序保存某類型文件的數(shù)據(jù)塊變化表達到一定數(shù)量或在某個設(shè)定的時 間啟動。分析程序的執(zhí)行步驟如圖3所示首先,收集某類型文件的所有數(shù)據(jù)塊變化表;然后,求得該類型文件所有數(shù)據(jù)塊變化表的一個最佳分割方式,這個最佳分割方式我們稱 之為某類型文件長度已知部分的最佳分割方式;隨后,通過上述該類型文件長度已知部分的最佳分割方式來求得長度值大于該類型文件所 有數(shù)據(jù)塊變化表中文件長度值的該類型文件的最佳分割方式,此為某類型文件長度未知部分 的最佳分割方式。這樣,某類型文件的最佳分割方式就包含了以下兩種情況當(dāng)某類型文件的文件長度值在該類型文件所有數(shù)據(jù)塊變化表所涉的文件長度值之內(nèi)時,使 用該類型文件長度已知部分的最佳分割方式對其進行分割;當(dāng)某類型文件的長度大于該類型文件所有數(shù)據(jù)塊變化表所涉的文件長度值,則在其所有數(shù) 據(jù)塊變化表所涉的文件長度值之內(nèi)的部分使用該類型文件長度已知部分的最佳分割方式分割 它,而其超過所有數(shù)據(jù)塊變化表所涉的文件長度值的部分則使用該類型文件長度未知部分的 最佳分割方式對其進行分割。在分析程序中,本發(fā)明采用最小上限法在若干某類型文件的數(shù)據(jù)塊變化表中求其最佳分 割方式,也即求某類型文件長度已知部分的最佳分割方式的算法為最小上限法,且在最小上 限法中,本發(fā)明約定了每一數(shù)據(jù)塊的最小長度為512字節(jié),最大長度為32768字節(jié)。最小上限法的具體算法流程為第一步,取上限值。從某類型文件的所有數(shù)據(jù)塊變化表中的每一數(shù)據(jù)塊變化表的O字節(jié)開始,將各自的第一個數(shù)據(jù)塊作為當(dāng)前塊,并取出各當(dāng)前塊的上限值。在取各當(dāng)前塊的上限 值時,如果各當(dāng)前塊的上限值中有大于32768字節(jié)的,則將大于32768字節(jié)的當(dāng)前塊分割為 等于或小于32768字節(jié)的數(shù)據(jù)塊,并將前述的32768字節(jié)或小于32768字節(jié)的數(shù)值作為該當(dāng) 前塊上限值。
第二步,取最小上限值。當(dāng)各數(shù)據(jù)塊變化表的當(dāng)前塊的上限值均大于512字節(jié),選擇其 中一個最小值作為最小上限值;當(dāng)各當(dāng)前塊的上限值都小于512字節(jié)時,則將各當(dāng)前塊與其 下一臨近塊合并為一個新的當(dāng)前塊,當(dāng)各合并后的新當(dāng)前塊的上限值均大于512字節(jié)時,取 其中一個最小值作為最小上限值。
根據(jù)上述最小上限法的算法流程,設(shè)某類型文件的所有數(shù)據(jù)塊變化表為2個時,則求其 長度已知部分的最佳分割方式的步驟如圖4所示
首先,分別取出該類型文件的數(shù)據(jù)塊變化表l的第一個塊[O, 1024),數(shù)據(jù)塊變化表2的 第一個塊[O, 806)作為各自的當(dāng)前塊,則其各自當(dāng)前塊的上限值分別為1024與806,由比 較可知,數(shù)據(jù)塊變化表1與數(shù)據(jù)塊變化表2的當(dāng)前塊的最小上限值為806,則該二表當(dāng)前塊 的最佳分割方式為[0,806),據(jù)此,最佳分割方式的第二個塊即從806開始,且數(shù)據(jù)塊變化表 1和數(shù)據(jù)塊變化表2的第二個塊的結(jié)束位置都在2048,則第二個數(shù)據(jù)塊的最佳分割方式為 [806, 2048),那么,第三個塊就從2048開始,此時,數(shù)據(jù)塊變化表1和數(shù)據(jù)塊變化表的下 一結(jié)束位置分別為3000和3550,根據(jù)最小上限法取二者最小值,所以第三個數(shù)據(jù)塊的最佳 分割方式為[2048, 3000),依次類推,可以得到每一個塊的最佳分割方式。所有塊的最佳分割 方式的組合即為該類型文件已知長度部分的最佳分割方式。
在獲得某類型文件長度己知部分的最佳分割方式后,分析程序?qū)⒏鶕?jù)該部分的最佳分割 方式來求取其長度未知部分的最佳分割方式。其處理流程為
將某類型文件的所有數(shù)據(jù)塊變化表中最大的一個文件長度值除以該類型文件長度已知部 分的最佳分割方式的總塊數(shù),得出該類型文件長度已知部分的數(shù)據(jù)塊平均間距值;
利用該數(shù)據(jù)塊平均間距值求得最接近1024倍數(shù)的數(shù)值作為該類型文件長度未知部分的數(shù) 據(jù)塊固定分割長度,按此固定長度分割該類型文件長度未知部分即為該類型文件長度未知部 分的其最佳分割方式。
圖5為如何利用某類型文件已知長度部分的最佳分割方式來求得其未知長度部分的最佳 分割方式的示意圖。例如,利用圖4中的兩個數(shù)據(jù)塊變化表中的一個最大文件長度值8400與 其長度已知部分的最佳分割方'式中的文件總塊數(shù)7相除,可以得出該類型文件長度已知部分 的數(shù)據(jù)塊平均間距值為1200。當(dāng)數(shù)據(jù)塊平均間距值為1200時,其最接近1024倍數(shù)的數(shù)值為 1024,那么,我們就將1024的固定分割長度作為該類型文件長度未知部分的該類型文件的最 佳分割方式。由此,我們稱在某類型文件的所有數(shù)據(jù)塊變化表中的一個最大文件長度值以內(nèi) 的部分為該類型文件的長度已知部分;超過前述最大值的部分為該類型文件長度未知部分。 在圖4所示的情況下,當(dāng)某類型的文件長度在8400字節(jié)以上時,超過8400字節(jié)的文件部分 即被視為某類型文件的長度未知部分;8400字節(jié)以內(nèi)的部分為該類型文件的長度已知部分。 該文件類型的最佳分割方式為其長度已知部分按圖4的最佳分割方式分割,長度未知的部分則按圖5求得的1024的固定分割長度分割。
在求得某類型文件的長度已知部分和其長度未知部分的最佳分割方式后,用于求得該最佳 分割方式的所有數(shù)據(jù)塊變化表將被刪除,且該類型文件的最佳分割方式將被保存在類型分割 數(shù)據(jù)庫中。
如前所述,分析程序可在比較程序保存某類型文件的數(shù)據(jù)塊變化表達到一定數(shù)量或在某個 設(shè)定的時間啟動,這就意味著,分析程序在經(jīng)過一定的時期后將會被再次啟動。當(dāng)分析程序 再次啟動時,若發(fā)現(xiàn)存在比較程序在比較新的同名文件后得到的新的數(shù)據(jù)塊變化表時,就會 執(zhí)行如圖6所示的更新某類型文件的最佳分割方式的步驟。
圖6中,我們設(shè)分析程序僅收集到一個某類型文件的新的數(shù)據(jù)庫變化表,那么更新的具體
步驟為
將原來儲存在類型信息庫中的某類型文件的最佳分割方式視為一個數(shù)據(jù)塊變化表; 利用前述分析程序求得其與新產(chǎn)生的數(shù)據(jù)塊變化表的最佳分割方式,此即為更新后的某類 型文件的最佳分割方式。
某類型文件的最佳分割方式的更新可以按上述操作重復(fù)進行。
圖7為調(diào)用類型信息庫中的某類型文件的最佳分割方式實現(xiàn)重復(fù)數(shù)據(jù)壓縮的流程圖,簡稱 壓縮程序流程圖,其詳細(xì)步驟如下
對于待壓縮文件,壓縮程序首先獲得其文件名,并根據(jù)文件名的擴展名或者文件中的文件 控制信息來判斷文件的類型;
得到待壓縮文件的文件類型后,從類型分割信息庫中調(diào)用該類型文件的最佳分割方式將待 壓縮文件內(nèi)容按該最佳分割方式分割為若干數(shù)據(jù)塊,并依次將這些數(shù)據(jù)塊從硬盤裝載到內(nèi)存;
將加載到內(nèi)存的數(shù)據(jù)塊逐一按如下方式處理
首先,使用散列算法為每一數(shù)據(jù)塊生成一個標(biāo)識符(散列算法可為MD5或SHA1、 SHA2等), 該標(biāo)識符與數(shù)據(jù)塊的關(guān)系為唯一對應(yīng)關(guān)系。
其次,數(shù)據(jù)壓縮程序?qū)⒏鶕?jù)數(shù)據(jù)塊的標(biāo)識符在存儲器的關(guān)系數(shù)據(jù)庫中或自行實現(xiàn)的數(shù)據(jù)結(jié) 構(gòu)中査找是否已經(jīng)存在相同的標(biāo)識符,如果不存在相同的標(biāo)識符,數(shù)據(jù)壓縮程序?qū)?shù)據(jù)塊保 存在存儲器上,并將數(shù)據(jù)塊的保存位置和與其對應(yīng)的標(biāo)識符存儲在關(guān)系數(shù)據(jù)庫或自行實現(xiàn)的 數(shù)據(jù)結(jié)構(gòu)中,以便將來再次査找;
如果存在相同標(biāo)識符,則表明該數(shù)據(jù)塊已經(jīng)保存在存儲器上,數(shù)據(jù)壓縮程序在目標(biāo)計算機 上獲得該標(biāo)識符對應(yīng)的數(shù)據(jù)塊在存儲器上的位置信息,并僅保存該位置信息,這樣可以避免 相同內(nèi)容的數(shù)據(jù)塊的再次傳輸及存儲,從而節(jié)約壓縮時間。
權(quán)利要求
1.一種重復(fù)數(shù)據(jù)的壓縮方法,該方法包括一個比較程序、一個分析程序和一個壓縮程序,其特征為以下步驟a)比較程序比較相同類型的同名文件發(fā)生變化時的異同情況,并獲得能體現(xiàn)該變化規(guī)律的數(shù)據(jù)塊變化表;b)分析程序分析同類型文件的所有數(shù)據(jù)塊變化表以獲得該類型文件的最佳分割方式,并將其保存于類型分割信息庫;c)壓縮程序首先判斷待壓縮文件的類型,然后根據(jù)該文件類型從類型分割信息庫中調(diào)用該類型文件的最佳分割方式對重復(fù)數(shù)據(jù)進行壓縮。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述的類型信息庫是指保存所有類型文件的最佳分割方 式的一個數(shù)據(jù)庫。
3. 根據(jù)權(quán)利要求1所述的方法,其特征為,步驟a)所述的比較程序的步驟為 對于待比較的文件,首先獲得該文件的文件類型;然后,在目標(biāo)計算機的存儲區(qū)域中査找是否存在與待比較文件同名的文件如果不存在同 名文件,直接復(fù)制文件到目標(biāo)計算機上的存儲區(qū)域內(nèi)并返回;如果存在同名文件,則比較二者的差異,并將差異結(jié)果保存為一個數(shù)據(jù)塊變化表,同時將 待比較文件復(fù)制到目標(biāo)計算機的存儲區(qū)域內(nèi),替換已存在的與其同名的文件。
4. 根據(jù)權(quán)利要求3所述的方法,若比較程序再次運行時,待比較文件再次發(fā)生變化,則再次 比較兩個同名文件的變化規(guī)律并生成相應(yīng)的新的數(shù)據(jù)塊變化表。
5. 根據(jù)權(quán)利要求1所述的方法,其特征為,步驟b)所述的分析程序的步驟為 首先,收集某類型文件的所有數(shù)據(jù)塊變化表;然后,求得該類型文件所有數(shù)據(jù)塊變化表的一個最佳分割方式,這個最佳分割方式我們稱 之為某類型文件長度已知部分的最佳分割方式;隨后,通過上述該類型文件長度已知部分的最佳分割方式來求得長度值大于該類型文件所 有數(shù)據(jù)塊變化表中文件長度值的該類型文件的最佳分割方式,這個最佳分割方式為某類型文 件長度未知部分的最佳分割方式。
6. 根據(jù)權(quán)利要求1或者權(quán)利要求5所述的方法,其中,某類型文件的最佳分割方式是指 當(dāng)某類型文件的文件長度值在該類型文件所有數(shù)據(jù)塊變化表所涉的文件長度值之內(nèi),則使用該類型文件長度已知部分的最佳分割方式分割;當(dāng)某類型文件的長度大于該類型文件所有數(shù)據(jù)塊變化表所涉的文件長度值,則在其所有數(shù) 據(jù)塊變化表所涉的文件長度值之內(nèi)的部分使用該類型文件長度已知部分的最佳分割方式分 割,而超過所有數(shù)據(jù)塊變化表所涉的文件長度值的部分則使用該類型文件長度未知部分的最 佳分割方式分割。
7. 根據(jù)權(quán)利要求5所述的方法,其特征為,分析程序可以在比較程序保存某類型文件的數(shù)據(jù) 塊變化表達到一定數(shù)量或者在某個設(shè)定的時間啟動,且分析程序可以重復(fù)啟動。
8. 根據(jù)權(quán)利要求7所述的方法,其特征為,當(dāng)分析程序重復(fù)啟動時,若發(fā)現(xiàn)存在新的數(shù)據(jù)塊 變化表,則執(zhí)行更新某類型文件的最佳分割方式的步驟。
9. 根據(jù)權(quán)利要求8或權(quán)利要求5所述的方法,當(dāng)執(zhí)行更新某類型文件的最佳分割方式的步驟時,其技術(shù)要點為將已存在的某類文件的最佳分割方式作為一個數(shù)據(jù)塊變化表,并將其與 新的數(shù)據(jù)塊變化表按分析程序的步驟求得新的最佳分割方式,此即為更新后的某類型文件的 最佳分割方式。
10. 根據(jù)權(quán)利要求9所述的方法,其特征為,某類型文件的最佳分割方式的更新操作可重復(fù)進行。
11. 根據(jù)權(quán)利要求5所述的方法,其特征為,其中求得某類型文件長度己知部分的最佳分割 方式的算法為最小上限法。
12. 根據(jù)權(quán)利要求5所述的方法,其特征為,其中利用某類型文件長度己知部分的最佳分割 方式求其長度未知部分的最佳分割方式的步驟為-將某類型文件的所有數(shù)據(jù)塊變化表中最大的一個文件長度值除以該類型文件長度已知部 分的最佳分割方式的總塊數(shù),得出該類型文件長度己知部分的數(shù)據(jù)塊平均間距值;利用該數(shù)據(jù)塊平均間距值求得最接近某一數(shù)值倍數(shù)的值作為該類型文件長度未知部分的 數(shù)據(jù)塊固定分割長度;按該固定長度分割該類型文件長度未知部分即為該類型文件長度未知部分的其最佳分割 方式。
13. 根據(jù)權(quán)利要求5所述的方法,其特征為,在求得某類型文件的長度已知部分和其長度未 知部分的最佳分割方式后,用于求得該最佳分割方式的所有數(shù)據(jù)塊變化表被刪除,且該類型 文件的最佳分割方式被保存于類型分割信息庫。
14. 根據(jù)權(quán)利要求1所述的一種重復(fù)數(shù)據(jù)壓縮方法,其特征為,步驟c)所述的壓縮程序的步 驟為對于待壓縮文件,壓縮程序首先獲得其文件名,并判斷其文件類型;在獲得文件類型后,從類型分割信息庫中調(diào)用該類型文件的最佳分割方式將待壓縮文件按 該最佳分割方式分割為若干數(shù)據(jù)塊,并依次將這些數(shù)據(jù)塊從硬盤裝載到內(nèi)存; 將加載到內(nèi)存的數(shù)據(jù)塊逐一按如下方式處理首先,使用散列算法為每一數(shù)據(jù)塊生成一個標(biāo)識符,該標(biāo)識符與數(shù)據(jù)塊的關(guān)系為唯一對應(yīng) 關(guān)系;其次,根據(jù)數(shù)據(jù)塊的標(biāo)識符在存儲器上査找是否已經(jīng)存在相同標(biāo)識符,如果不存在相同的 標(biāo)識符,壓縮程序?qū)?shù)據(jù)塊和及其存儲位置和與其對應(yīng)的標(biāo)識符保存在存儲器上;如果存在相同標(biāo)識符,則在.目標(biāo)計算機上獲得該標(biāo)識符對應(yīng)的數(shù)據(jù)塊在存儲器上的位置信 息,并僅保存該位置信息。
15. 根據(jù)權(quán)利要求14所述的方法,其特征為,壓縮程序根據(jù)文件名的擴展名或者文件中的文 件控制信息來判斷文件的類型。
16. 根據(jù)權(quán)利要求14所述的方法,其特征為,在存儲器中的關(guān)系數(shù)據(jù)庫或自行實現(xiàn)的數(shù)據(jù)結(jié) 構(gòu)中査找相同的標(biāo)識符。
全文摘要
本發(fā)明公開了一種計算機重復(fù)數(shù)據(jù)的壓縮方法,利用本方法可在較短時間內(nèi)較大程度地提高重復(fù)數(shù)據(jù)的壓縮比率。本發(fā)明通過如下步驟實現(xiàn)首先,比較程序比較相同類型的同名文件發(fā)生變化時的異同情況,并獲得相應(yīng)的數(shù)據(jù)塊變化表;然后,分析程序分析同類型文件的所有數(shù)據(jù)塊變化表,求得該類型文件的最佳分割方式,并將其保存于類型分割信息庫;最后,當(dāng)需要壓縮某類型文件的重復(fù)數(shù)據(jù)時,調(diào)用類型分割信息庫中該類型文件的最佳分割方式壓縮待處理文件中的重復(fù)數(shù)據(jù),即可實現(xiàn)最大程度的壓縮率。
文檔編號G06F17/30GK101320372SQ200810037869
公開日2008年12月10日 申請日期2008年5月22日 優(yōu)先權(quán)日2008年5月22日
發(fā)明者賀鴻富 申請人:上海愛數(shù)軟件有限公司