CN103384884B - 一种文件压缩方法、文件解压缩方法、装置及服务器 - Google Patents
一种文件压缩方法、文件解压缩方法、装置及服务器 Download PDFInfo
- Publication number
- CN103384884B CN103384884B CN201280003410.0A CN201280003410A CN103384884B CN 103384884 B CN103384884 B CN 103384884B CN 201280003410 A CN201280003410 A CN 201280003410A CN 103384884 B CN103384884 B CN 103384884B
- Authority
- CN
- China
- Prior art keywords
- data block
- compression
- length
- decompression
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种文件压缩方法、解压缩方法、装置及服务器,所述解压缩方法包括:获取压缩文件中各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;计算解压缩得到的所述各个数据块的CRC值;如果获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同,则所述数据块与原数据块一致;合并解压缩得到的所述各个数据块,得到原文件。本发明根据获取的各个压缩数据块的长度和各个数据块的CRC值,对该压缩文件进行并行解压缩,提高了解压缩的速度与效率。
Description
技术领域
本发明涉及信息技术领域,特别涉及一种文件压缩方法、文件解压缩方法、装置及服务器。
背景技术
目前,现有的GZIP(GNU Zip)压缩方法中,先将文件拆分成多个数据块,然后对拆分后的多个数据块进行并行压缩,之后,在以bit为单位将压缩的每个数据块合并为一个压缩文件。由该GZIP压缩方法可知,整个GZIP压缩文件只有压缩数据块的起始地址,并没有压缩数据的数据块数和每个数据块的长度。
所以,在对应的GZIP解压缩方法中,即对所述压缩文件进行解压缩时,只能顺序的一个个bit进行读取和解析,也就是说,只有对所述压缩文件中的第一个压缩数据块解压缩完成后,才能对第二个压缩数据块进行解压,即,只能对一个一个数据块进行串行解压。
现有的GZIP解压缩方式中,只能对压缩文件进行串行解压缩,解压缩的速度和效率不高。
发明内容
本发明实施例中提供了一种文件压缩方法、文件解压缩的方法、装置及服务器,数据的并行解压提高解压缩的速度和效率。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面提供了一种文件压缩方法,包括:
将文件拆分成多个数据块,并统计所述数据块的个数;
根据所述多个数据块的个数计算需要扩展数据内容的长度,并根据所述长度申请额外可选项占用的内存;
对所述多个数据块进行并行压缩,得到对应的多个压缩数据块,并获取各个数据块的循环冗余校验CRC值;
将所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在所述额外可选项中;
将所述额外可选项添加到数据压缩格式中头部对应的扩展extra选项中,合并所述多个压缩数据块,以获得压缩文件;
将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
在第一方面的第一种可能的实现方式中,所述对所述多个数据块进行并行压缩,具体包括:通过多个压缩引擎分别对所述多个数据块进行并行压缩。
结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述额外可选项还包括:SI1和SI2,其中,所述SI1和SI2表示额外可选项中扩展数据的ID。
第二方面提供了一种文件解压缩方法,包括:
获取压缩文件中各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;
根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
计算解压缩得到的所述各个数据块的CRC值;
判断获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值是否相同;
在所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同时,合并解压缩得到的所述各个数据块,得到原文件。
在第二方面的第一种可能的实现方式中,所述获取压缩文件中各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值具体包括:
从压缩文件头部扩展extra选项中的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值。
结合第二方面或第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述对所述各个压缩数据块进行并行解压缩,具体包括:
通过多个解压缩引擎分别对所述多个压缩数据块进行并行解压缩。
第三方面提供了一种文件压缩装置,包括:
拆分单元,用于将文件拆分成多个数据块,并统计所述多个数据块的个数;
第一计算单元,用于根据所述多个数据块的个数计算扩展数据内容的长度,根据所述长度申请额外可选项占用的内存;
压缩单元,用于对所述多个数据块进行并行压缩,得到多个压缩数据块;
第二计算单元,用于在压缩单元对所述多个数据块进行并行压缩时,分别计算各个数据块的循环冗余校验CRC值;
存储单元,用于所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;
添加单元,用于将所述额外可选项添加到压缩格式中头部对应的扩展extra选项中;
合并单元,用于在所述添加单元将所述额外可选项添加到GZIP格式中头部对应的位置后,合并所述多个压缩数据块,得到压缩文件;
发送单元,用于将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
第四方面提供了一种文件解压缩装置,包括:
获取单元,用于从压缩文件头部的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;
划分单元,用于根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
解压缩单元,用于对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
计算单元,用于在解压缩单元对所述各个压缩数据块进行并行解压缩时,计算解压缩得到的所述各个数据块的CRC值;
判断单元,用于判断所述获取单元获取的所述各个数据块的CRC值与计算解压缩得到的各个数据块的CRC值是否相同;
确定单元,用于在判断单元判断CRC值相同时,确定所述数据块与原数据块一致;
合并单元,用于在所述确定单元合确定所述数据块与原数据块一致时,合并解压缩得到的所述各个数据块,得到原文件。
在第四方面的第一种可能的实现方式中,所述获取单元,具体用于从压缩文件头部扩展extra选项中的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值。
第五方面提供了一种服务器,包括:
处理器,用于将待压缩的文件拆分成多个数据块,并统计所述多个数据块的个数;根据所述多个数据块的个数计算扩展数据内容的长度,以及根据所述长度申请额外可选项占用的内存;
压缩引擎组,包括多个压缩引擎,用于对所述多个数据块进行并行压缩,得到多个压缩数据块;
所述处理器,还用于计算各个数据块的循环冗余校验CRC值,并将所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;以及将所述额外可选项添加到GZIP格式中头部对应的扩展extra选项中,合并所述多个压缩数据块,得到压缩文件,并将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
第六方面提供了一种服务器,包括:
处理器,用于从压缩文件头部的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
解压缩引擎组,用于对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
所述处理器,还用于计算解压缩得到的所述各个数据块的循环冗余校验CRC值;如果判断获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同,则所述数据块与原数据块一致;合并解压缩得到的所述各个数据块,得到原文件。
由上述技术方案可知,本发明实施例中,在对文件进行压缩时,将各个压缩数据块的长度和各个数据块的循环冗余校验(CRC,Cyclic Redundancy Check)值添加在头部信息的额外可选项中,以便于接收端在对该压缩文件解压时,可以根据所述各个压缩数据块的长度和各个数据块的CRC值对该压缩文件进行并行解压缩,从而提高了解压缩的速度与效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种文件压缩方法的流程图;
图2为本发明实施例提供的一种文件解压缩方法的流程图;
图3为本发明实施例提供的一种文件压缩装置的结构示意图;
图4为本发明实施例提供的一种文件解压缩装置的结构示意图;
图5为本发明实施例提供的一种服务器的结构示意图;
图6为本发明实施例提供的另一种服务器的结构示意图;
图7为本发明实施例提供的一种文件压缩方法的应用实例的流程图;
图8为本发明实施例提供的一种文件解压缩方法的应用实例的流程图。
具体实施方式
描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1为本发明实施例提供的一种文件压缩方法的流程图;所述方法包括:
步骤101:将文件拆分成多个数据块,并统计所述多个数据块的个数;
其中,服务器(X86服务器、简约指令集计算机、IA-64服务器等)对文件(比如UNIX系统的文件、本地存储的文件或者接收到的文件,或者是操作系统上运行的各种格式的文件,特别是文本文件等等)拆分方式有多种,针对不同格式的数据块,可以采用的不同的拆分方法,比如,可以采用TMPGEnc来拆分MPEG格式的文件;还可以采用ASF Tools拆分ASF或WMV格式的文件,还可以采用AVI chop拆分MPEG4格式的文件等等。
其中,拆分的方式可以按照固定字节数拆分,也可以按照文件的大小均分,还可以根据需要任意拆分,本实施例不作限制。
本实施例中的文件,是指适用于GZIP压缩或解压缩的文件。
步骤102:根据所述多个数据块的个数计算扩展数据内容的长度,并根据所述长度申请额外可选项占用的内存;
比如,如果将文件拆分成10个数据块,则扩展数据内容的长度(XLEN,eXtra LENgth)就是:每个数据块的长度之和,即10个数据块的长度之和。本实施例将所有数据块占用的长度定义为扩展数据内容的长度。
也就是说,所述XLEN是可选项字节数。即下述表1的NUM~nCRC的字节数。
比如,如果将文件拆分成10个数据块的情况下,参考下述表2中每个表示项的字节数,即XLEN=2(NUM)+(4+4)*10=82。
然后,由于计算出XLEN的长度为82,可以通过malloc函数来申请82bite的内存。
本实施例中,所述额外可选项位于压缩文件的头部的扩展选项中,其额外可选项的结构具体详见下述表1所示。
步骤103:对所述多个数据块进行并行压缩,得到多个压缩数据块,并计算各个数据块的循环冗余校验CRC值;
在该实施例中,并行压缩需要通过多个压缩引擎分别对所述多个数据块进行压缩,本实施例中,在硬件压缩的场合下,并行压缩是利用多个压缩引擎同时对多个数据块进行压缩;在软件压缩的场合下,并行压缩是在中央处理器(CPU,Central Processing Unit)有多个物理核的情况下,利用多线程技术,同时对多个数据块进行压缩。
通常情况下,为了校验各个数据解压后是否正确,需要计算各个数据块的CRC校验值,以便于通过CRC算法进行校验,其中CRC的原理是:
而计算各个数据块的CRC校验值,其中一种CRC算法的原理为,但并不限于此:下面,借助于多项式除法,其余数为校验字段。
例如:数据段代码为:1011001;对应m(x)=x6+x4+x3+1
假设生成多项式为:g(x)=x4+x3+1;则对应g(x)的代码为:11001
x4m(x)=x10+x8+x7+x4对应的代码记为:10110010000;
采用多项式除法:得余数为:1010(即校验字段为:1010)。
当然,对于本领域技术人员,还可以采用其他的CRC算法,本实例不作限制。
步骤104:将所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;
比如,在上述过程中,先将文件拆分成N个数据块,统计数据块的个数,以及根据数据块的个数得到扩展数据内容的长度;然后,再对各个数据块进行压缩后,获知每个压缩数据块的长度,并计算得到各个数据块的CRC值,然后,将所述扩展数据内容的长度、数据块的个数、第一个压缩数据块的长度和第一数据块的CRC值,第二个压缩数据块的长度和第二数据块的CRC值,一直到第N个压缩数据块的长度和第N数据块的CRC值依次分别添加到额外可选项中对应的XLEN字段、NUM字段、1LEN字段、1CRC字段;2LEN字段、2CRC字段;以及NLEN字段、NCRC字段中;
进一步,所述额外可选项还可以包括标识信息,比如SI1和SI2,其中,所述SI1和SI2为额外可选项中扩展数据内容的ID。
具体的,所述额外可选项的结构具体如表1所示:
表1
SI1 | SI2 | XLEN | NUM | 1LEN | 1CRC | ···· | nLEN | nCRC |
其中,所述SI1和SI2为标识信息;
所述XLEN为扩展内容的长度,即从NUM到nCRC的长度;
所述NUM,表示该压缩文件拥有的数据块数;
所述1LEN,1CRC至NLEN,NCRC,用于表示扩展信息,包括各个压缩数据块的长度信息,具体包括:压缩后的各个压缩数据块(block)的长度和压缩前的各个数据块的CRC32值,所述CRC32是一种数据差错校验码,在数据通信中以及压缩等情况下,通过比较原始数据和压缩包解压数据的CRC32值是否相同来校验数据是否出错。其中,额外可选项的结构中包括具体内容如表2所示:
表2
其中,表2所示内容只是举例说明,并不限于此,还可以根据需要进行适应性修改。
步骤105:将所述额外可选项添加到压缩格式中头部对应的扩展extra选项中,合并所述多个压缩数据块,以得到压缩文件;
进一步,所述扩展extra选项除了包括所述额外可选项外,还可以包括源文件名、注释文字或CRC16等。本实施例主要是对额外可选项进行扩展。即在额外可选项中增加所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值,以便于接收端根据所述增加的信息对各个数据块进行并行解压。
本实施例对文件的压缩适用于GZIP压缩格式。每个独立的GZIP压缩文件都包括头部、数据部和尾部,其中,头部可以包括扩展extra选项,之外还可以包括:ID1ID2、CM、FLG、MTIME、XFL、OS,其中,
所述ID1ID2为固定值,即ID1=0X1F,ID2=0X8B;用于标识GZIP格式;
所述CM:表示压缩方法,目前只有一个值,即CM=8,表示DEFLATE方法;
所述MTIME:表示压缩时间,采用UNIX格式;
所述XFL:表示压缩模式,XFL=2:表示最大压缩但最慢算法;XFL=4,表示最快但最小压缩算法;
所述OS:表示文件系统,例如:OS=0表示FAT文件系统;OS=3表示UNIX文件系统;
所述FLG:表示扩展功能标识,每个BIT表示一种附加数据,具体的对应内容会在extra里面表示,所述extra包括:额外可选项,原文件名,注释文字和CRC16等。
上述描述了GZIP压缩文件的头部的内容信息,之外,GZIP压缩文件还可以包括数据部和尾部,也就是说,目前,每个独立的GZIP压缩文件都是由头部,数据部和尾部组成。其中,所述头部的信息详见上述,在此不再赘述。
所述数据部包括一个或者多个数据块(本实施例即一个或多个压缩数据块,下同),每个数据块的格式包括BFINAL、BTYPE和数据DATA信息。BFINAL位占用1bit,表示是否为最后一个数据块,如果为BFINAL位为1时表示最后一个数据块。BYTPE表示数据的压缩方式,压缩类型(2bit),可能是静态Huffman压缩(01)、动态Huffman压缩(10)也可能是表示不压缩(00);DATA表示压缩数据,(比如,LZ77+huffman编码+二叉树特性等)。
所述尾部,包括原文件的32位CRC值和以及原始数据长度的低32位值,尾部主要用来验证解压后的文件和压缩前的原文件是否一致。
步骤106:将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
需要说明的是,在该实施例中,针对本实施例的压缩方式,可以采用现有的串行解压,也可以采用本发明实施例提供的并行解压(具体如下述图2实施例所示),如果采用串行解压缩,就需要利用该压缩文件尾部的内容来校验解压后的文件和压缩前的原文件是否一致;而如果采用本申请的并行解压缩,不需要利用尾部的内容用来验证解压后的文件和压缩前的原文件是否一致,而是需要根据头部中扩展extra选项中的额外可选项的各个CRC值来校验解压后的各个数据块和压缩前的原各个数据块是否一致。
本发明实施例中,在对文件进行压缩时,将各个压缩数据块的长度和各个数据块的CRC值通过新增字段添加在头部信息的额外可选项中,以便于在接收端解压时,可以根据这些信息对该压缩文件进行并行解压缩,从而提高了解压缩的速度与效率。
还请参阅图2,图2为本发明实施例提供的一种文件解压缩方法的流程图,所述方法包括:
步骤201:获取压缩文件中各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;
其获取的过程为:服务器从压缩文件头部扩展extra选项中的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值。
步骤202:根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
步骤203:对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
具体可以服务器将各个压缩数据块输入到对应解压缩引擎中,通过多个解压缩引擎分别对所述多个压缩数据块进行并行解压缩。其中并行解压缩的过程对于本领域技术人员来说,已是熟知技术,在此不再赘述。
步骤204:计算解压缩得到的所述各个数据块的CRC值;
其计算过程对于本领域技术人员已是熟知技术,在此不再赘述。
步骤205:如果获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同,则所述各个数据块与原各个数据块一致;
步骤206:合并解压缩得到的所述各个数据块,得到原文件。
本发明实施例中,在解压缩时,服务器先从压缩文件中获取各个压缩数据块的长度和各个数据块的CRC值,根据这些信息对该压缩文件进行并行解压缩,并对解压缩后的数据块可以分别通过独立的CRC值进行正确性检查,从而提高了解压缩的速度与效率。
基于上述方法的实现过程,本发明实施例还提供一种文件压缩装置,其结构示意图如图3所示,所述装置包括:拆分单元31,第一计算单元32,压缩单元33,第二计算单元34,存储单元35,添加单元36和合并单元37,其中,所述拆分单元31,用于将文件拆分成多个数据块,并统计所述多个数据块的个数;其中,可以按照固定字节数拆分,可以均分,还可以根据需要任意拆分。所述第一计算单元32,用于根据所述多个数据块的个数计算扩展数据内容的长度,根据所述长度申请额外可选项占用的内存;所述压缩单元33,用于对所述多个数据块进行并行压缩,得到多个压缩数据块,具体可以通过多个压缩引擎分别对所述多个数据块进行并行压缩;所述第二计算单元34,用于在压缩单元33对所述多个数据块进行并行压缩时,分别计算各个数据块的循环冗余校验CRC值;所述存储单元35,用于所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;所述添加单元36,用于将所述额外可选项添加到压缩格式中头部对应的扩展extra选项中;所述合并单元37,用于在所述添加单元将所述额外可选项添加到GZIP格式中头部对应的位置后,合并所述多个压缩数据块,得到压缩文件。
所述装置中各个单元的功能和作用的实现过程,详见上述方法中对应的实现过程,在此不再赘述。
相应的,本发明实施例还提供一种文件解压缩装置,其结构示意图如图4所示,所述装置包括:获取单元41,划分单元42,解压缩单元43,计算单元44,判断单元45,确定单元46、合并单元47和发送单元48,其中,所述获取单元41,用于从压缩文件头部的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值,具体用于从压缩文件头部扩展extra选项中的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;所述划分单元42,用于根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;所述解压缩单元43,用于对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;所述计算单元44,用于在解压缩单元对所述各个压缩数据块进行并行解压缩时,计算解压缩得到的所述各个数据块的CRC值;所述判断单元45,用于判断所述获取单元获取的所述各个数据块的CRC值与计算解压缩得到的各个数据块的CRC值是否相同;所述确定单元46,用于在判断单元判断CRC值相同时,确定所述数据块与原数据块一致;所述合并单元47,用于在所述确定单元合确定所述数据块与原数据块一致时,合并解压缩得到的所述各个数据块,得到原文件;所述发送单元48,用于将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
所述装置中各个单元的功能和作用的实现过程,详见上述方法中对应的实现过程,在此不再赘述。
相应的,本发明实施例还提供一种服务器,其结构示意图如图5所示,所述服务器包括:处理器51和压缩引擎组52,其中,所述处理器51,用于将待压缩的文件拆分成多个数据块,并统计所述多个数据块的个数;根据所述多个数据块的个数计算扩展数据内容的长度,以及根据所述长度申请额外可选项占用的内存;所述压缩引擎组52,包括对个压缩引擎,用于对所述多个数据块进行并行压缩,得到多个压缩数据块;所述处理器51,还用于计算各个数据块的循环冗余校验CRC值,并将所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;以及将所述额外可选项添加到GZIP格式中头部对应的扩展extra选项中,合并所述多个压缩数据块,得到压缩文件,并将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
所述服务器的功能和作用的实现过程,详见上述方法中对应的实现过程,在此不再赘述。
相应的,本发明实施例还提供另一种服务器,其结构示意图如图6所示,所述服务器包括:处理器61和解压缩引擎组62,其中,所述处理器61,用于从压缩文件头部的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;所述解压缩引擎组62,用于对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;所述处理器61,还用于计算解压缩得到的所述各个数据块的循环冗余校验CRC值;如果判断获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同,则所述数据块与原数据块一致;合并解压缩得到的所述各个数据块,得到原文件。
本发明实施例中,为了使包含多压缩数据块(block)的压缩文件在解压的时候能够并行解压,从而发挥多核或者多通道技术的优势。在遵循现有GZIP格式的基础上,本发明实施例中,在压缩的时把各block块的长度信息和各block块原数据块的CRC32值存放在头部扩展选项的额外可选项中,以便于在解压时,根据所述各block块的长度信息和各block块原数据块的CRC32值进行并行解压,从而提高了解压缩的速度与效率。
为了便于本领域技术人员的理解,下面以具体的应用实例来说明。
还请参阅图7,为本发明实施例提供的一种文件压缩方法的应用实例的流程图;如图所示,该压缩方式主要是利用硬件或者软件的多个压缩引擎对个block块进行并行压缩,整个压缩过程主要包括:
1、处理器将原文件分成各个子数据块,比如,将文件拆分成n个子文件,即子文件1、子文件2直到子文件n,并统计各个子文件的个数,比如为n个;
2、处理器根据子文件的个数(即n),计算出扩展数据的长度(XLEN),并申请存储扩展数据所占用内存;
3、处理器将各个子数据块被传输到对应的各个压缩引擎(压缩引擎组),所述每个压缩引擎对所述对应各个子文件进行并行压缩,并计算数据块的CRC32值;
4、各压缩引擎在把各个子文件压缩成压缩子文件后,把压缩子文件的长度和原子文件的CRC32值存储到扩展可选项中的额外可选项中,其中子文件的长度是以bit为单位;同时,还需要将各个子文件的个数,以及扩展数据的长度的存储到扩展可选选中的额外可选项中;
5、当所有数据块压缩好后,处理器把额外可选项添加到压缩文件的头部对应位置(即扩展可选项),然后合并所述压缩子文件,得到压缩文件。
在该压缩的实施例中,因为扩展数据信息是按原先的GZIP方式进行编写,所以按这个方式压缩的文件,任何能解压其他GZIP格式压缩包的程序或者解压引擎都可以对这个文件进行解压缩,只是不能发挥并行解压缩的优势。如果想提交解压缩的效率,可以采用本实施例提供的并行解压缩。
还请参阅图8,为本发明实施例提供的一种文件解压缩方法的应用实例的流程图;如图所示,该解压缩方式主要是利用硬件或者软件的多个解压缩引擎(即解压缩引擎组)对个block块进行并行解压缩,整个解压缩过程主要包括:
1处理器从压缩文件中扩展选项中的额外可选项中获取各个block(即压缩子文件或压缩数据块)的个数和各block的长度,并根据各个block的个数和各block的长度对所述压缩文件进行分块,得到各个block,比如block1、block2直到block n。
2处理器将各个block并行放入对应的各个解压引擎中;
3、各个解压引擎对各个block进行并行解压,并计算各block块对应的CRC值。
4、处理器在各个解压引擎对各个block块解压成数据块后,读取各个block对应的额外可选项中的CRC值;
5、处理器比较解压后计算的各个block对应的CRC值与读取的各个block对应的CRC32值,如果二者相同,则确认该数据块与原数据块一致。
6、当所有block解压完毕后,合并所述解压的数据块,得到原文件。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种文件压缩方法,其特征在于,包括:
将待发送的文件拆分成多个数据块,并统计所述数据块的个数;
根据所述多个数据块的个数计算需要扩展数据内容的长度,并根据所述长度申请额外可选项占用的内存;
对所述多个数据块进行并行压缩,得到对应的多个压缩数据块,并获取各个数据块的循环冗余校验CRC值;
将所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在所述额外可选项中;
将所述额外可选项添加到数据压缩格式中头部对应的扩展extra选项中,合并所述多个压缩数据块,以获得压缩文件;
将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
2.根据权利要求1所述的方法,其特征在于,所述对所述多个数据块进行并行压缩,具体包括:
通过多个压缩引擎分别对所述多个数据块进行并行压缩。
3.根据权利要求1或2所述的方法,其特征在于,所述额外可选项还包括:SI1和SI2,其中,所述SI1和SI2表示额外可选项中扩展数据的ID。
4.一种文件解压缩方法,其特征在于,包括:
获取接收到的压缩文件中各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;
根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
计算解压缩得到的所述各个数据块的CRC值;
判断获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值是否相同;
在所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同时,合并解压缩得到的所述各个数据块,得到与接收到的压缩文件对应的原文件。
5.根据权利要求4所述的方法,其特征在于,所述获取压缩文件中各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值具体包括:
从压缩文件头部扩展extra选项中的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值。
6.根据权利要求4或5所述的方法,其特征在于,所述对所述各个压缩数据块进行并行解压缩,具体包括:
通过多个解压缩引擎分别对所述多个压缩数据块进行并行解压缩。
7.一种文件压缩装置,其特征在于,包括:
拆分单元,用于将待发送的文件拆分成多个数据块,并统计所述多个数据块的个数;
第一计算单元,用于根据所述多个数据块的个数计算扩展数据内容的长度,根据所述长度申请额外可选项占用的内存;
压缩单元,用于对所述多个数据块进行并行压缩,得到多个压缩数据块;
第二计算单元,用于在压缩单元对所述多个数据块进行并行压缩时,分别计算各个数据块的循环冗余校验CRC值;
存储单元,用于所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;
添加单元,用于将所述额外可选项添加到压缩格式中头部对应的扩展extra选项中;
合并单元,用于在所述添加单元将所述额外可选项添加到GZIP格式中头部对应的位置后,合并所述多个压缩数据块,得到压缩文件;
发送单元,用于将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
8.一种文件解压缩装置,其特征在于,包括:
获取单元,用于从接收到的压缩文件头部的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;
划分单元,用于根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
解压缩单元,用于对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
计算单元,用于在解压缩单元对所述各个压缩数据块进行并行解压缩时,计算解压缩得到的所述各个数据块的CRC值;
判断单元,用于判断所述获取单元获取的所述各个数据块的CRC值与计算解压缩得到的各个数据块的CRC值是否相同;
确定单元,用于在判断单元判断CRC值相同时,确定所述数据块与原数据块一致;
合并单元,用于在所述确定单元合确定所述数据块与原数据块一致时,合并解压缩得到的所述各个数据块,得到与接收到的压缩文件对应的原文件。
9.根据权利要求8所述的装置,其特征在于,所述获取单元,具体用于从压缩文件头部扩展extra选项中的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值。
10.一种服务器,其特征在于,包括:
处理器,用于将待发送的待压缩的文件拆分成多个数据块,并统计所述多个数据块的个数;根据所述多个数据块的个数计算扩展数据内容的长度,以及根据所述长度申请额外可选项占用的内存;
压缩引擎组,包括多个压缩引擎,用于对所述多个数据块进行并行压缩,得到多个压缩数据块;
所述处理器,还用于计算各个数据块的循环冗余校验CRC值,并将所述扩展数据内容的长度、数据块的个数、各个压缩数据块的长度和各个数据块的CRC值存储在额外可选项中;以及将所述额外可选项添加到GZIP格式中头部对应的扩展extra选项中,合并所述多个压缩数据块,得到压缩文件,并将所述压缩文件发送给接收端,以便于接收端对所述压缩文件进行并行解压。
11.一种服务器,其特征在于,包括:
处理器,用于从接收到的压缩文件头部的额外可选项中获取各个压缩数据块的长度、数据块的个数以及各个数据块的循环冗余校验CRC值;根据所述压缩数据块的长度和数据块的个数对所述压缩文件进行分块,得到各个压缩数据块;
解压缩引擎组,用于对所述各个压缩数据块进行并行解压缩,得到对应的各个数据块;
所述处理器,还用于计算解压缩得到的所述各个数据块的循环冗余校验CRC值;如果判断获取的所述各个数据块的CRC值与解压缩得到的各个数据块的CRC值相同,则所述数据块与原数据块一致;合并解压缩得到的所述各个数据块,得到与接收到的压缩文件对应的原文件。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/086341 WO2014089753A1 (zh) | 2012-12-11 | 2012-12-11 | 一种文件压缩方法,文件解压缩方法、装置及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103384884A CN103384884A (zh) | 2013-11-06 |
CN103384884B true CN103384884B (zh) | 2016-11-16 |
Family
ID=49492140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280003410.0A Active CN103384884B (zh) | 2012-12-11 | 2012-12-11 | 一种文件压缩方法、文件解压缩方法、装置及服务器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN103384884B (zh) |
WO (1) | WO2014089753A1 (zh) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740298A (zh) * | 2014-12-12 | 2016-07-06 | 北京奇虎科技有限公司 | 文件处理方法、装置及服务端设备 |
CN105573785A (zh) * | 2015-12-11 | 2016-05-11 | 青岛海信电器股份有限公司 | 一种差分包的制作方法及装置 |
CN108781213B (zh) * | 2016-03-14 | 2020-08-14 | 华为技术有限公司 | 一种用于传输数据的方法、装置和系统 |
CN106021003B (zh) * | 2016-05-05 | 2019-11-29 | 捷开通讯(深圳)有限公司 | 智能终端的修复方法、智能终端以及服务器 |
CN106126367B (zh) * | 2016-06-28 | 2019-09-20 | 湖北锐世数字医学影像科技有限公司 | 一种文件的自校验方法及系统 |
CN107919935B (zh) * | 2016-10-08 | 2022-04-15 | 中兴通讯股份有限公司 | 一种提高语音通信质量的方法及装置 |
CN107977233B (zh) | 2016-10-19 | 2021-06-01 | 华为技术有限公司 | 内核镜像文件快速加载方法和装置 |
CN106503165A (zh) * | 2016-10-31 | 2017-03-15 | 杭州华为数字技术有限公司 | 压缩、解压方法、装置以及设备 |
CN106648955B (zh) * | 2016-11-15 | 2020-01-31 | 杭州华为数字技术有限公司 | 压缩方法及相关装置 |
WO2018201377A1 (en) * | 2017-05-04 | 2018-11-08 | Nokia Technologies Oy | A unified error correction and error detection code generator |
CN107967157B (zh) * | 2017-08-17 | 2021-06-01 | 青岛海信移动通信技术股份有限公司 | 一种生成ota中间包过程中的数据处理方法及装置 |
CN108134609A (zh) * | 2017-12-21 | 2018-06-08 | 深圳大学 | 一种通用数据gz格式的多线程压缩与解压方法及装置 |
WO2019119336A1 (zh) * | 2017-12-21 | 2019-06-27 | 深圳大学 | 一种通用数据gz格式的多线程压缩与解压方法及装置 |
CN108446300B (zh) * | 2018-01-26 | 2021-04-09 | 北京奇虎科技有限公司 | 数据信息的扫描方法及装置 |
CN108509642A (zh) * | 2018-04-12 | 2018-09-07 | 郑州云海信息技术有限公司 | 压缩、解压gzip格式文件的方法、装置及存储介质 |
CN108520067A (zh) * | 2018-04-12 | 2018-09-11 | 郑州云海信息技术有限公司 | 压缩、解压gzip格式文件的方法、装置及存储介质 |
CN110784225A (zh) | 2018-07-31 | 2020-02-11 | 华为技术有限公司 | 数据压缩、解压方法及相关装置、电子设备、系统 |
CN108958966A (zh) * | 2018-09-27 | 2018-12-07 | 合肥达博科技有限公司 | 一种无损数据压缩的数据保护方法和装置 |
CN109582653B (zh) * | 2018-11-14 | 2020-12-08 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
CN111290697B (zh) * | 2018-12-07 | 2022-01-28 | 上海寒武纪信息科技有限公司 | 数据压缩方法、编码电路和运算装置 |
CN111382852B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
CN111382853B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
CN111294057A (zh) * | 2018-12-07 | 2020-06-16 | 上海寒武纪信息科技有限公司 | 数据压缩方法、编码电路和运算装置 |
CN111381878A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
CN111294056B (zh) * | 2018-12-07 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 数据解压方法和编码电路 |
CN111382856B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 数据处理装置、方法、芯片及电子设备 |
WO2020114283A1 (zh) * | 2018-12-07 | 2020-06-11 | 上海寒武纪信息科技有限公司 | 数据处理方法及装置 |
CN109710581B (zh) * | 2018-12-25 | 2023-05-30 | 四川巧夺天工信息安全智能设备有限公司 | 一种解压qcow镜像文件中压缩数据的方法 |
WO2020232682A1 (zh) * | 2019-05-22 | 2020-11-26 | 深圳大学 | 一种硬件并行压缩的系统及方法 |
CN110247666B (zh) * | 2019-05-22 | 2023-08-18 | 深圳大学 | 一种硬件并行压缩的系统及方法 |
CN112099725A (zh) | 2019-06-17 | 2020-12-18 | 华为技术有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
CN110727720B (zh) * | 2019-10-21 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 列表显示及查询方法、装置、存储介质和计算机设备 |
CN110808054B (zh) * | 2019-11-04 | 2022-05-06 | 思必驰科技股份有限公司 | 多路音频的压缩与解压缩方法及系统 |
CN111258621B (zh) * | 2019-11-19 | 2022-08-02 | 浙江瑞银电子有限公司 | 一种固件差异化升级方法 |
CN111723059B (zh) * | 2020-05-25 | 2021-03-16 | 深圳市科楠科技开发有限公司 | 一种数据压缩方法、装置、终端设备及存储介质 |
CN112084158A (zh) * | 2020-09-25 | 2020-12-15 | 北京百家科技集团有限公司 | 一种数据集文件压缩方法及装置 |
CN114697309A (zh) * | 2020-12-25 | 2022-07-01 | 北京三快在线科技有限公司 | 文件传输方法、文件处理方法及装置 |
CN112866227A (zh) * | 2021-01-13 | 2021-05-28 | 北京连山科技股份有限公司 | 一种文件授权保护方法和系统 |
CN112860646B (zh) * | 2021-02-24 | 2022-12-02 | 上海泰宇信息技术股份有限公司 | 一种海量文件档案分布式聚合压缩与单一式抽取的方法 |
CN113225180A (zh) * | 2021-04-29 | 2021-08-06 | 北京连山科技股份有限公司 | 一种通信密钥的保护方法和系统 |
CN114726924B (zh) * | 2022-05-17 | 2022-10-21 | 北京安盟信息技术股份有限公司 | 一种基于tcp/ip协议栈特性提高网络带宽利用率方法 |
CN117795855A (zh) * | 2022-05-27 | 2024-03-29 | 深圳华大基因科技服务有限公司 | Fastq数据的处理方法及装置、电子设备和存储介质 |
CN115883839B (zh) * | 2023-03-09 | 2023-06-06 | 湖北芯擎科技有限公司 | 一种图像校验方法、装置、设备及计算机可读存储介质 |
CN118036048B (zh) * | 2024-04-11 | 2024-06-14 | 深圳至简天成科技有限公司 | 一种在线调试平台的数据持久化方法、装置及计算机介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5686915A (en) * | 1995-12-27 | 1997-11-11 | Xerox Corporation | Interleaved Huffman encoding and decoding method |
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN102724500A (zh) * | 2012-06-05 | 2012-10-10 | 沙基昌 | 一种视频数据的压缩/解压缩方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5532560B2 (ja) * | 2008-08-25 | 2014-06-25 | ソニー株式会社 | データ変換装置、およびデータ変換方法、並びにプログラム |
CN102740075B (zh) * | 2012-06-05 | 2015-02-11 | 沙基昌 | 一种视频数据的压缩/解压缩方法及系统 |
-
2012
- 2012-12-11 WO PCT/CN2012/086341 patent/WO2014089753A1/zh active Application Filing
- 2012-12-11 CN CN201280003410.0A patent/CN103384884B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5686915A (en) * | 1995-12-27 | 1997-11-11 | Xerox Corporation | Interleaved Huffman encoding and decoding method |
CN102244518A (zh) * | 2010-05-10 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 并行解压缩的硬件实现的系统及方法 |
CN102724500A (zh) * | 2012-06-05 | 2012-10-10 | 沙基昌 | 一种视频数据的压缩/解压缩方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103384884A (zh) | 2013-11-06 |
WO2014089753A1 (zh) | 2014-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103384884B (zh) | 一种文件压缩方法、文件解压缩方法、装置及服务器 | |
US11036392B2 (en) | Determining when to use convergent encryption | |
US7689630B1 (en) | Two-level bitmap structure for bit compression and data management | |
US7937371B2 (en) | Ordering compression and deduplication of data | |
CN105824720B (zh) | 一种面向数据连续读取的重删纠删混合系统的数据放置方法 | |
JP6370838B2 (ja) | データ転送に関する単一パスエントロピー検出のための装置及び方法 | |
TW201423426A (zh) | 資料分塊上傳與儲存系統及方法 | |
JP6720664B2 (ja) | インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法 | |
US10310765B1 (en) | Record-oriented data storage for a distributed storage system | |
CN103873438A (zh) | 压缩包上传去重系统及方法 | |
US20130179413A1 (en) | Compressed Distributed Storage Systems And Methods For Providing Same | |
CN103051341B (zh) | 数据编码装置及方法、数据解码装置及方法 | |
CN106648955B (zh) | 压缩方法及相关装置 | |
CN104199951B (zh) | 网页处理方法及装置 | |
US20150293934A1 (en) | Storing differences between precompressed and recompressed data files | |
CN103248369A (zh) | 基于fpga的压缩系统及其方法 | |
US20110069833A1 (en) | Efficient near-duplicate data identification and ordering via attribute weighting and learning | |
CN105446975A (zh) | 一种文件打包方法及装置 | |
CN103152430A (zh) | 一种缩减数据占用空间的云存储方法 | |
CN106557571A (zh) | 一种基于k‑v存储引擎的数据去重方法及装置 | |
CN108459872B (zh) | 应用多渠道打包方法、装置、计算机设备及存储介质 | |
CN113468118B (zh) | 一种基于区块链的文件增量存储方法、装置及存储介质 | |
WO2021082926A1 (zh) | 一种数据压缩的方法及装置 | |
Hasugian et al. | File Compression Application Design Using Half Byte Algorithm | |
JP2017097437A (ja) | 情報処理システム、情報処理装置、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211223 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |