zlib, gzip 및 zip은 어떤 관련이 있습니까? 공통점은 무엇이며 어떻게 다른가요?
zlib 에서 사용되는 압축 알고리즘 은 본질적으로 gzip 및 zip 의 압축 알고리즘 과 동일 합니다. gzip 과 zip 은 무엇입니까 ? 그들은 어떻게 다르고 어떻게 동일합니까?
짧은 형식:
.zip
일반적으로 Deflate 압축 방법을 사용 하는 아카이브 형식 입니다. .gz
GZIP 형식 도위한 수축 압축 방법을 사용하여 단일 파일이다. 종종 gzip은 tar 와 함께 사용되어 압축 된 아카이브 형식 인 .tar.gz
. ZLIB 라이브러리 위한 수축 압축 및 압축 해제 ZIP, GZIP 의한 사용을위한 코드를 제공 PNG (용도 ZLIB 랩퍼 DEFLATE에 데이터)를, 그리고 다른 많은 애플리케이션.
긴 형식 :
ZIP 형식은 자신의 구현, PKZIP은, 셰어웨어이었다 열린 사양과 오픈 형식으로 필 캐츠에 의해 개발되었다. 각 파일이 개별적으로 압축되는 파일 및 해당 디렉토리 구조를 저장하는 아카이브 형식입니다. 파일 유형은 .zip
. 파일과 디렉토리 구조를 선택적으로 암호화 할 수 있습니다.
ZIP 형식은 여러 압축 방법을 지원합니다.
0 - The file is stored (no compression)
1 - The file is Shrunk
2 - The file is Reduced with compression factor 1
3 - The file is Reduced with compression factor 2
4 - The file is Reduced with compression factor 3
5 - The file is Reduced with compression factor 4
6 - The file is Imploded
7 - Reserved for Tokenizing compression algorithm
8 - The file is Deflated
9 - Enhanced Deflating using Deflate64(tm)
10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
11 - Reserved by PKWARE
12 - File is compressed using BZIP2 algorithm
13 - Reserved by PKWARE
14 - LZMA (EFS)
15 - Reserved by PKWARE
16 - Reserved by PKWARE
17 - Reserved by PKWARE
18 - File is compressed using IBM TERSE (new)
19 - IBM LZ77 z Architecture (PFS)
97 - WavPack compressed data
98 - PPMd version I, Rev 1
방법 1 ~ 7은 역사적이며 사용되지 않습니다. 방법 9 ~ 98은 비교적 최근에 추가 된 방법이며 사용 빈도가 다양합니다. ZIP 형식에서 실제로 널리 사용되는 유일한 방법은 방법 8, Deflate 및 압축이 전혀없는 방법 0입니다. 실제로 .zip
만나게 될 거의 모든 파일은 방법 8과 0, 아마도 방법 8 만 사용할 것입니다. (방법 8은 또한 압축없이 비교적 적은 확장으로 데이터를 효과적으로 저장하는 방법을 가지고 있으며 방법 0은 스트리밍 할 수 없습니다. 반면 방법 8은 가능합니다.)
ISO / IEC 21320-1은 : 파일 컨테이너 2015 표준은 자바에서 보관 사용되는 파일 (.JAR)로, 제한된 zip 형식이며, 오피스 오픈 XML 파일 (마이크로 소프트 오피스, .XLSX,의 .pptx을 .DOCX), Office 문서 형식 파일 (.odt, .ods, .odp) 및 EPUB 파일 (.epub). 이 표준은 압축 방법을 0 및 8로 제한하고 암호화 또는 서명 없음과 같은 기타 제약 조건을 제한합니다.
1990 년경 Info-ZIP 그룹 은 Deflate 형식으로 압축을 지원하고 그 형식과 이전 형식의 압축 해제를 지원하는 이식 가능한 무료 오픈 소스 구현 zip
및 unzip
유틸리티를 작성했습니다. 이것은 .zip
형식 의 사용을 크게 확장했습니다 .
90 년대 초반 에는 Info-ZIP 유틸리티의 Deflate 코드에서 파생 된 Unix 유틸리티를 대체하기 위해 gzip 형식 이 개발되었습니다 . Unix 는 파일 이름에를 추가하여 단일 파일 또는 스트림을 압축하도록 설계되었습니다 . LZW 압축 알고리즘을 사용하는데 , 당시에는 특허권이 있었고 무료 사용은 특허권자에 의해 분쟁이있었습니다. Deflate의 일부 특정 구현은 Phil Katz가 특허를 받았지만 형식은 아니기 때문에 특허를 침해하지 않는 Deflate 구현을 작성할 수있었습니다. 이 구현은 지난 20 년 이상 동안 그렇게 도전적이지 않았습니다. Unix 유틸리티는compress
compress
.Z
compress
gzip
compress
, 그리고 실제로 압축 된 compress
데이터의 압축을 풀 수 있습니다 (해당 문장을 구문 분석 할 수 있다고 가정). 파일 이름에를 gzip
추가합니다 .gz
. gzip
Deflate 압축 데이터 형식을 사용합니다.이 형식은 Unix보다 훨씬 더 잘 compress
압축되고 압축 해제 속도가 매우 빠르며 데이터에 대한 무결성 검사로 CRC-32를 추가합니다. 헤더 형식은 또한 compress
원래 파일 이름 및 파일 수정 시간과 같이 허용 된 형식 보다 더 많은 정보를 저장할 수 있도록합니다 .
compress
단일 파일 만 압축 하지만 이 tar
유틸리티를 사용하여 파일, 해당 속성 및 디렉토리 구조의 아카이브를 단일 .tar
파일로 만든 다음 압축 compress
하여 .tar.Z
파일 을 만드는 것이 일반적 이었습니다. 사실이 tar
유틸리티에는의 출력을으로 파이프하는 대신 동시에 압축을 수행 할 수있는 옵션 tar
이 compress
있습니다. 이것은 모두 gzip 형식으로 전달되었으며 형식으로 tar
직접 압축하는 옵션이 있습니다 .tar.gz
. tar.gz
형식은 더 이상 압축 .zip
a의 압축 이후, 접근 .tar
, 파일을 통해 특히 많은 작은 파일을 중복을 활용할 수 있습니다..tar.gz
인해 매우 높은 휴대 성으로 유닉스에서 사용하는 가장 일반적인 아카이브 형식이지만 종종 볼 수 있도록보다 효과적인 압축 방법뿐만 아니라 사용이 있습니다 .tar.bz2
및 .tar.xz
아카이브.
과 달리 .tar
에서는 .zip
끝에 중앙 디렉토리가 있으며 콘텐츠 목록을 제공합니다. 그것과 별도의 압축은 .zip
파일 의 개별 항목에 대한 임의 액세스를 제공 합니다. .tar
파일을 압축 해제하고 어떻게 디렉토리 구축하기 위해 시작부터 끝까지 스캔해야 .tar
파일이 나열됩니다.
Shortly after the introduction of gzip, around the mid-1990's, the same patent dispute called into question the free use of the .gif
image format, very widely used on bulletin boards and the World Wide Web (a new thing at the time). So a small group created the PNG losslessly compressed image format, with file type .png
, to replace .gif
. That format also uses the Deflate format for compression, which is applied after filters on the image data expose more of the redundancy. In order to promote widespread usage of the PNG format, two free code libraries were created. libpng and zlib. libpng handled all of the features of the PNG format, and zlib provided the compression and decompression code for use by libpng, as well as for other applications. zlib was adapted from the gzip
code.
All of the mentioned patents have since expired.
The zlib library supports Deflate compression and decompression, and three kinds of wrapping around the deflate streams. Those are: no wrapping at all ("raw" deflate), zlib wrapping, which is used in the PNG format data blocks, and gzip wrapping, to provide gzip routines for the programmer. The main difference between zlib and gzip wrapping is that the zlib wrapping is more compact, six bytes vs. a minimum of 18 bytes for gzip, and the integrity check, Adler-32, runs faster than the CRC-32 that gzip uses. Raw deflate is used by programs that read and write the .zip
format, which is another format that wraps around deflate compressed data.
zlib is now in wide use for data transmission and storage. For example, most HTTP transactions by servers and browsers compress and decompress the data using zlib.
Different implementations of deflate can result in different compressed output for the same input data, as evidenced by the existence of selectable compression levels that allow trading off compression effectiveness for CPU time. zlib and PKZIP are not the only implementations of deflate compression and decompression. Both the 7-Zip archiving utility and Google's zopfli library have the ability to use much more CPU time than zlib in order to squeeze out the last few bits possible when using the deflate format, reducing compressed sizes by a few percent as compared to zlib's highest compression level. The pigz utility, a parallel implementation of gzip, includes the option to use zlib (compression levels 1-9) or zopfli (compression level 11), and somewhat mitigates the time impact of using zopfli by splitting the compression of large files over multiple processors and cores.
ZIP is a file format used for storing an arbitrary number of files and folders together with lossless compression. It makes no strict assumptions about the compression methods used, but is most frequently used with DEFLATE.
Gzip is both a compression algorithm based on DEFLATE but less encumbered with potential patents et al, and a file format for storing a single compressed file. It supports compressing an arbitrary number of files and folders when combined with tar. The resulting file has an extension of .tgz
or .tar.gz
and is commonly called a tarball.
zlib is a library of functions encapsulating DEFLATE in its most common LZ77 incarnation.
The most important difference is that gzip is only capable to compress a single file while zip compresses multiple files one by one and archives them into one single file afterwards. Thus, gzip comes along with tar most of the time (there are other possibilities, though). This comes along with some (dis)advantages.
If you have a big archive and you only need one single file out of it, you have to decompress the whole gzip file to get to that file. This is not required if you have a zip file.
On the other hand, if you compress 10 similiar or even identical files, the zip archive will be much bigger because each file is compressed individually, whereas in gzip in combination with tar a single file is compressed which is much more effective if the files are similiar (equal).
'program story' 카테고리의 다른 글
git pull 실행 취소, 저장소를 이전 상태로 가져 오는 방법 (0) | 2020.09.28 |
---|---|
작은 따옴표로 묶인 문자열에서 작은 따옴표를 이스케이프하는 방법 (0) | 2020.09.28 |
유효한 이메일 주소의 최대 길이는 얼마입니까? (0) | 2020.09.28 |
HashMap, LinkedHashMap 및 TreeMap의 차이점 (0) | 2020.09.28 |
숫자가 정밀도를 잃지 않고 갈 수있는 JavaScript의 가장 높은 정수 값은 무엇입니까? (0) | 2020.09.28 |