Jump to content

gzip

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

gzip
Original author(s)
Developer(s)GNU Project
Initial release31 October 1992; 31 years ago (1992-10-31)
Stable release
1.10 (GNU Gzip)[1] / 29 December 2018; 5 years ago (2018-12-29)
Repositorygit.savannah.gnu.org/cgit/gzip.git
Written inC
Operating systemUnix-like, Plan 9, Inferno
TypeData compression
LicenseGPLv3
Websitewww.gnu.org/software/gzip/

gzip파일 압축과 압축 해제에 사용되는 파일 형식소프트웨어 응용 프로그램입니다. 그 프로그램은 Jean-loup GaillyMark Adler에 의해 초기 유닉스 시스템에서 사용된 압축 프로그램에 대한 자유 소프트웨어 대체품으로 만들어졌었고, GNU에 사용하도록 의도되었습니다 ("g"는 "GNU"에서 가져옴). 버전 0.1은 1992년 10월 31일에 처음 공개되었고, 버전 1.0은 1993년 2월에 출시되었습니다.

gzip 형식의 압축-해제는 웹 프로토콜, 데이터 교환ETL (표준 파이프에서) 응용 프로그램의 중요한 기능, 스트리밍 알고리듬으로 구현될 수 있습니다.

File format

gzip
Filename extension
.gz
Internet media type
application/gzip[2]
Uniform Type Identifier (UTI)org.gnu.gnu-zip-archive
Magic number1f 8b
Developed byJean-loup Gailly and Mark Adler
Type of formatData compression
Open format?Yes
Websitegzip.org (obsolete)

gzip은 LZ77Huffman 코딩의 조합인 DEFLATE 알고리듬을 기반으로 합니다. DEFLATE는 당시에 compress와 기타 인기 있는 아카이버의 사용성을 제한했던 LZW와 기타 특허권 데이터 압축 알고리듬을 대체하기 위한 의도되었습니다.

"gzip"은 종종 다음과 같은 gzip 파일 형식을 참조하기 위해 사용됩니다:

  • 매직 넘버 (1f 8b), 압축 방법 (DEFLATE에 대해 08), 1-바이트 헤더 플래그, 4-바이트 타임스탬프, 압축 플래그와 운영 시스템 ID를 포함하는 10-바이트 헤더.
  • 원래 파일이름, 주석 필드, "여분의" 필드, 및 헤더 섹션에 대한 CRC-32 체크섬의 하위 절반을 포함하여, 헤더 플래그에서 허용되는 선택적 여분의 헤더.[3]
  • DEFLATE 압축 페이로드를 포함하는 본문.
  • CRC-32 체크섬과 압축되지 않은 원래 데이터의 길이, 모듈로 232를 포함하는 8바이트 푸터.[4]

비록 그것의 파일 형식이 역시 그러한 여러 스트림을 연결되도록 허용하지만 (gzip으로 압축된 파일은 그들이 원래 하나의 파일인 것처럼 단순히 압축 해제된 연결),[5] gzip은 통상적으로 단지 단일 파일을 압축하기 위해 사용됩니다.[6] 압축 아카이브는 전형적으로 파일 모음을 단일 tar 아카이브 (역시 tarball이라고도 함)로[7] 조합하고 그런-다음 해당 아카이브를 gzip으로 압축함으로써 생성됩니다. 최종 압축된 파일의 확장자는 보통 .tar.gz 또는 .tgz입니다.

gzip은 DEFLATE도 사용하는 ZIP 아카이브 형식과 혼동하지 마십시오. ZIP 형식은 외부 아카이버없이 파일 모음을 보유할 수 있지만, 같은 데이터를 보유하는 압축된 타르볼보다 덜 컴팩트한데, 왜냐하면 그것은 파일을 개별적으로 압축하고 파일 사이의 중복성을 활용할 수 없기 때문입니다 (단단한 압축).

Implementations

NetBSD Gzip / FreeBSD Gzip
Developer(s)The NetBSD Foundation
Repositorycvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/gzip/
Written inC
TypeData compression
LicenseSimplified BSD License

프로그램의 다양한 구현이 작성되어 왔습니다. 가장 공통적으로 알려진 것은 Lempel-Ziv 코딩 (LZ77)을 사용한 GNU 프로젝트의 구현입니다. OpenBSD의 gzip 버전은 실제로 압축 프로그램으로, OpenBSD 3.4에서 gzip 형식에 대해 지원이 추가되었습니다. 이 특정 버전에서 'g'는 gratis를 의미합니다.[8] FreeBSD, DragonFly BSDNetBSD는 GNU 버전 대신 BSD-라이선스 구현을 사용합니다; 그것은 실제로 GNU 구현의 옵션과 호환되도록 의도된 zlib에 대해 명령줄 인터페이스입니다.[9] 이들 구현은 원래 NetBSD에서 제공되고, bzip2 및 유닉스 형식의 압축-해제를 지원합니다.

3-8% 더 나은 압축을 달성하는 대안적인 압축 프로그램은 Zopfli입니다. 그것은 요구된 압축 시간을 희생하면서 보다 철저한 알고리듬을 사용하여 gzip-호환 압축을 달성합니다. 그것은 압축-해제 시간에는 영향을 미치지 않습니다.

Mark Adler에 의해 작성된, pigz는 gzip과 호환되고 모든 사용 가능한 CPU 코어 및 쓰레드를 사용함으로써 압축 속도를 높입니다.[10]

gzip은 "BZGF" 사양에 따라 최대 64KB 블록의 블록-기반 압축을 사용합니다.[11]

Damage recovery

아카이브의 첫 번째 손상된 부분 이전의 블록 데이터는 보통 완전히 읽을 수 있습니다. 손상에 의해 파괴되지 않은 위치되어진 블록의 데이터는 나중에 찾은 어려운 해결 방법을 통해 복구될 수 있습니다.[12]

Derivatives and other uses

대부분의 리눅스 배포판에 포함된 tar 유틸리티는 z 옵션을 전달함으로써 .tar.gz 파일, 예를 들어, tar -zxf file.tar.gz을 추출할 수 있습니다(예: tar -zxf file.tar.gz).

zlib은 API에서 gzip 파일 형식과 경량 데이터 스트림 형식에 대한 지원을 모두 포함하는 라이브러리 형식에서 DEFLATE 알고리듬의 추상화입니다. zlib 스트림 형식, DEFLATE 및 gzip 파일 형식은 각각 RFC 1950, RFC 1951 및 RFC 1952로 표준화되었습니다.

gzip 형식은 World Wide Web에서 HTML과 다른 콘텐츠 전송 속도를 높이는 데 사용되는 기술, HTTP 압축에 사용됩니다. 그것은 RFC 2616에 명시된 HTTP 압축을 위한 세 가지 표준 형식 중 하나입니다. 이 RFC는 역시 zlib 형식("DEFLATE"라고 함)도 지정하며, gzip이 헤더와 트레일러의 형식으로 11바이트의 오버헤드를 추가한다는 점을 제외하고는 gzip 형식과 같습니다. 여전히 Internet Explorer가 표준을 올바르게 구현하지 않고 RFC 1950에 지정된 대로 zlib 형식을 처리할 수 없기 때문에 gzip 형식이 zlib보다 권장되는 경우가 있습니다.[13]

zlib DEFLATE는 Portable Network Graphics (PNG) 형식에 의해 내부적으로 사용됩니다.

1990년대 후반부터, 블록-정렬 알고리듬을 기반으로 하는 파일 압축 유틸리티, bzip2가 gzip 대체품으로 인기를 얻었습니다. 그것은 상당히 더 작은 파일 (특히 소스 코드와 기타 구조화된 텍스트의 경우)을 생성하지만 메모리 및 처리 시간 (최대 4배)을 희생합니다.[14]

AdvanceCOMP7-Zip는 gzip 자체보다 더 나은 압축 비율로 내부 DEFLATE 구현을 사용하여 gzip 호환 파일을 생성할 수 있지만 참조 구현에 비해 프로세서 시간이 더 많이 소요됩니다.[citation needed]

See also

Notes

  1. ^ Meyering, Jim (2018-12-29). "gzip-1.10 released [stable]". The Free Software Foundation. Retrieved 2018-12-31.
  2. ^ The 'application/zlib' and 'application/gzip' Media Types. Tools.ietf.org. doi:10.17487/RFC6713. RFC 6713. Retrieved 2014-03-01.
  3. ^ Deutsch <ghost@aladdin.com>, L. Peter. "GZIP file format specification version 4.3". tools.ietf.org. Retrieved 2019-07-23.
  4. ^ Jean-loup Gailly. "GNU Gzip". Gnu.org. Retrieved 11 October 2015.
  5. ^ "GNU Gzip: Advanced usage". Gnu.org. Retrieved 2012-11-28.
  6. ^ "Can gzip compress several files into a single archive?". Gnu.org. Retrieved 2010-01-27.
  7. ^ "tarball, The Jargon File, version 4.4.7". Catb.org. Retrieved 2010-01-27.
  8. ^ "OpenBSD gzip(1) manual page". Openbsd.org. OpenBSD. Retrieved 2018-02-04.
  9. ^ "gzip". Man.freebsd.org. 2011-10-09. Retrieved 2014-03-01.
  10. ^ Mark Adler (2017). "pigz: A parallel implementation of gzip for modern multi-processor, multi-core machines". zlib.net.
  11. ^ Compress::BGZF - Read/write blocked GZIP (BGZF) files – "According to the BGZF specification, each GZIP block is limited to 64kb in size"
  12. ^ Recovering a damaged .gz file – Jean-loup Gailly, GZip.org
  13. ^ Lawrence, Eric (21 November 2014). "Compressing the Web". MSDN Blogs > IEInternals. Microsoft.
  14. ^ "Comparison Tool: 7-zip vs bzip2 vs gzip". compressionratings.com. Archived from the original on 1 November 2014. Retrieved 1 November 2014.

References

  • RFC 1952 – GZIP file format specification version 4.3

External links