맨위로가기

Gzip

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

gzip은 DEFLATE 알고리즘을 기반으로 하는 파일 형식으로, 데이터를 압축하는 데 사용된다. 파일 형식은 매직 넘버, 헤더, 압축된 페이로드, CRC-32 체크섬 및 원본 데이터 길이를 포함하며, 일반적으로 단일 파일 압축에 사용된다. gzip은 ZIP 아카이브 형식과 혼동될 수 있지만, 여러 파일 간의 중복을 활용하지 못하는 차이가 있다. gzip은 GNU 프로젝트의 LZ77 코딩을 사용하는 구현이 널리 사용되며, HTTP 압축에도 사용되어 웹 콘텐츠 전송 속도를 높이는 데 기여한다. gzip은 또한 zlib와 같은 라이브러리에서 DEFLATE 알고리즘을 추상화하는 데 사용되며, HTTP 압축, PNG 파일 형식 등 다양한 응용 분야에서 활용된다.

더 읽어볼만한 페이지

  • 유닉스 보관 및 압축 관련 유틸리티 - Bzip2
    Bzip2는 줄리안 세워드가 개발한 자유 소프트웨어로, 버로우즈-휠러 변환, MTF 변환, 허프만 부호화 등의 압축 기법을 사용하여 gzip이나 ZIP보다 높은 압축률을 제공하지만 압축 속도가 느린 블록 정렬 압축 알고리즘이다.
  • 유닉스 보관 및 압축 관련 유틸리티 - XZ Utils
    XZ Utils는 xz 및 lzma 파일 형식의 압축 및 압축 해제를 위한 소프트웨어로, 높은 압축률을 제공하며, 2024년에는 백도어 삽입으로 인한 보안 취약점이 발생했다.
  • 자유 압축 소프트웨어 - Bzip2
    Bzip2는 줄리안 세워드가 개발한 자유 소프트웨어로, 버로우즈-휠러 변환, MTF 변환, 허프만 부호화 등의 압축 기법을 사용하여 gzip이나 ZIP보다 높은 압축률을 제공하지만 압축 속도가 느린 블록 정렬 압축 알고리즘이다.
  • 자유 압축 소프트웨어 - XZ Utils
    XZ Utils는 xz 및 lzma 파일 형식의 압축 및 압축 해제를 위한 소프트웨어로, 높은 압축률을 제공하며, 2024년에는 백도어 삽입으로 인한 보안 취약점이 발생했다.
  • 무손실 압축 알고리즘 - VP9
    VP9는 구글이 개발한 오픈 소스 비디오 코덱으로, VP8보다 압축 효율을 높이고 HEVC보다 나은 성능을 목표로 개발되었으며, WebM 형식으로 사용되고 주요 웹 브라우저와 넷플릭스, 유튜브 등에서 지원했으나 AV1의 등장으로 개발이 중단되었다.
  • 무손실 압축 알고리즘 - FLAC
    FLAC은 조시 콜슨이 개발한 무손실 오디오 코덱으로, 원본 음질을 유지하면서 파일 크기를 줄이기 위해 오디오 데이터를 압축하며, 4~32비트 샘플 크기, 최대 8 채널을 지원하고, 미국 국립 문서 기록 관리청에서 디지털 오디오에 선호되는 형식으로 지정되었다.
Gzip - [IT 관련 정보]에 관한 문서
기본 정보
종류데이터 압축
개발자GNU 프로젝트
출시일1992년 10월 31일
최신 안정화 버전1.12
최신 안정화 버전 출시일2022년 4월 7일
운영 체제유닉스 계열, 플랜 9, 인페르노
장르데이터 압축
프로그래밍 언어C
라이선스GPL-3.0-or-later
웹사이트GNU Gzip 공식 웹사이트
저장소GNU Gzip 저장소
파일 확장자.gz
MIME 형식application/gzip
타입 코드Gzip
유니폼 타입org.gnu.gnu-zip-archive
매직 넘버\x1f\x8b
창시자장=루프 가이이, 마크 애들러
명칭
원어gzip
설명GNU 파일 압축/해제 도구

2. 파일 포맷

gzip 파일 형식은 LZ77과 허프만 코딩을 결합한 DEFLATE 알고리즘을 기반으로 하며, 일반적으로 `.gz` 확장자를 사용한다. 이 형식은 단일 파일을 압축하는 데 주로 사용된다.[5]

gzip은 ZIP과 마찬가지로 DEFLATE 알고리즘을 사용하지만, 여러 파일을 하나의 파일로 압축하는 기능은 없다. 따라서 여러 파일을 압축할 때는 Tar와 함께 사용되는 것이 일반적이다. `.tar.gz` 또는 `.tgz` 확장자를 가진 파일이 이러한 방식으로 압축된 파일이다. 이 방식은 ZIP 형식과 비교했을 때, 각 파일을 개별적으로 압축하는 ZIP과 달리 전체 파일을 하나의 덩어리로 압축하여 중복되는 데이터를 효율적으로 제거해 더 높은 압축률을 얻을 수 있다.(솔리드 압축)[29]

gzip 파일 형식은 LZW를 기반으로 하는 확장자를 가진 compress 유틸리티의 파일 형식과 혼동해서는 안 된다. 그러나 gunzip 유틸리티는 .Z 파일을 압축 해제할 수 있다.[7] gzip은 Lempel-Ziv 알고리즘(LZ77)과 허프만 부호를 사용하여 기존의 compress보다 압축률이 높은 것이 특징이다.[19]

2. 1. 구조

gzip 파일은 일반적으로 다음과 같은 구조를 갖는다.

  • 10바이트 헤더: 매직 넘버 (1f 8b), 압축 방식 (DEFLATE의 경우 08), 1바이트 헤더 플래그, 4바이트 타임스탬프, 압축 플래그, 운영 체제 ID를 포함한다.
  • 선택적 추가 헤더: 헤더 플래그에 의해 허용되며, 원본 파일 이름, 주석 필드, "추가" 필드, 헤더 섹션의 CRC-32 체크섬 하위 절반을 포함한다.[2]
  • 본문: DEFLATE로 압축된 페이로드를 포함한다.
  • 8바이트 트레일러: CRC-32 체크섬과 압축되지 않은 원본 데이터 길이(232의 나머지)를 포함한다.[3]

2. 2. Tar와 결합

Gzip은 단일 파일 압축에 주로 사용되므로, 여러 파일을 압축하기 위해 tar 아카이브와 함께 사용되는 경우가 많다. tar로 묶은 후 gzip으로 압축한 파일은 일반적으로 `.tar.gz` 또는 `.tgz` 확장자를 사용한다.[24] 이러한 방식은 ZIP 형식과 비교했을 때, 각 파일을 개별적으로 압축하는 ZIP과 달리 전체 파일을 하나의 덩어리로 압축하여 중복되는 데이터를 효율적으로 제거해 더 높은 압축률을 얻을 수 있다. (솔리드 압축)[29]

3. 역사

gzip은 1990년대 초, 유닉스 시스템에서 사용되던 compress 유틸리티의 특허 문제와 압축 성능의 한계를 극복하기 위해 개발되었다. GNU 프로젝트의 일환으로 장루 가일리(Jean-loup Gailly)와 마크 애들러(Mark Adler)가 개발하였다.[1]

초기에 gzip은 `.z` 확장자를 사용했지만, pack과의 혼동을 피하기 위해 `.gz`로 변경되었다. 1993년경에 만들어진 `.z`는 gzip 파일일 가능성이 높다. 개발자를 위해 zlib 라이브러리가 만들어졌고, 이로 인해 널리 사용되는 형식이 되었다. gzip은 LZ77 알고리즘과 허프만 부호를 사용하여 기존의 compress보다 압축률이 높은 것이 특징이다.[19]

4. 구현체

LZ77 코딩을 사용하는 GNU 프로젝트의 gzip 구현이 가장 널리 알려져 있다. OpenBSD의 gzip은 compress를 기반으로 하며, OpenBSD 3.4에서 gzip 형식 지원이 추가되었다.[8] FreeBSD, DragonFly BSD, NetBSD는 BSD 라이선스 구현을 사용하는데, 이는 zlib의 명령줄 인터페이스로 GNU 구현과 호환된다.[9]

Zopfli는 더 높은 압축률(3~8% 더 나은 압축)을 제공하는 구현이지만, 압축 시간이 오래 걸린다. 압축 해제 시간에는 영향을 미치지 않는다.

Mark Adler가 작성한 `pigz`는 gzip과 호환되며 멀티코어 프로세서를 활용하여 압축 속도를 높인다.[10]

5. 응용 및 파생

gzip은 여러 분야에서 활용되고 있다. 1990년대 후반부터는 bzip2와 같이 블록 정렬 알고리즘을 기반으로 하는 파일 압축 유틸리티가 gzip을 대체하기도 했다. bzip2는 특히 소스 코드 및 기타 구조화된 텍스트와 같이 상당히 작은 파일을 생성하지만, 메모리 및 처리 시간은 최대 4배까지 소요된다.[14]

AdvanceCOMP, Zopfli, libdeflate 및 7-Zip과 같은 도구들은 gzip 자체보다 더 높은 압축률을 가진 DEFLATE 구현을 사용하여 gzip 호환 파일을 생성할 수 있지만, 참조 구현에 비해 더 많은 프로세서 시간이 소요된다.

2023년에 발표된 연구에 따르면, gzip과 같은 간단한 무손실 압축 기술을 k-최근접 이웃 분류기와 결합하여 자연어 처리에서 딥 뉴럴 네트워크의 매력적인 대안을 만들 수 있다. 이 접근 방식은 GPU 하드웨어 불필요와 같은 낮은 리소스 요구 사항으로 인해 BERT와 같은 기존 접근 방식을 능가하는 것으로 나타났다.[15]

대부분의 리눅스 배포판에 포함되어 있는 tar 유틸리티는 `-z` 옵션을 사용하여 .tar.gz 파일을 추출할 수 있다. 예를 들어 `tar -zxf file.tar.gz`와 같이 사용할 수 있는데, 여기서 `-z`는 압축 해제를, `-x`는 추출을, `-f`는 압축된 아카이브 파일의 이름을 지정한다. 선택적으로 `-v` (verbose) 옵션을 사용하면 추출 중인 파일을 나열할 수 있다.[12]

5. 1. HTTP 압축

gzip은 월드 와이드 웹에서 HTML 및 기타 콘텐츠 전송 속도를 높이는 데 사용되는 기술인 HTTP 압축에 사용되는 형식이다.[13] HTTP 1.1에는 데이터를 압축하여 전송량을 줄이는 기능이 있는데, gzip은 그 때의 압축 형식 중 하나로 사용되고 있다.[21]

gzip은 HTTP 통신 속도를 높이기 위해 사용되는 가장 일반적인 압축 알고리즘으로, 현재 대부분의 서버 소프트웨어와 브라우저가 gzip 압축을 지원한다.[26][27] 2024년 3월 현재, 모든 웹사이트 중 약 50%가 gzip 압축을 사용하고 있다.[28]

5. 2. 기타 응용

zlib는 gzip 파일 형식과 API의 경량 데이터 스트림 형식을 모두 지원하는 라이브러리 형태의 DEFLATE 알고리즘 추상화이다. zlib 스트림 형식, DEFLATE 및 gzip 파일 형식은 각각 RFC 1950, RFC 1951 및 RFC 1952로 표준화되었다.[13] zlib DEFLATE는 PNG (Portable Network Graphics) 형식 내부에서 사용된다.

HTTP 압축월드 와이드 웹에서 HTML 및 기타 콘텐츠 전송 속도를 높이는 데 사용되는 기술이며, gzip은 RFC 2616에 지정된 HTTP 압축의 세 가지 표준 형식 중 하나이다. 이 RFC는 zlib 형식("DEFLATE"라고 함)도 지정하는데, gzip이 헤더 및 트레일러 형식으로 11바이트의 오버헤드를 추가한다는 점을 제외하고 gzip 형식과 동일하다. 그러나 인터넷 익스플로러는 표준을 올바르게 구현하지 않고 RFC 1950에 지정된 zlib 형식을 처리할 수 없기 때문에 gzip 형식이 zlib보다 권장되는 경우가 있다.[13]

gzip 명령어는 표준 입력으로부터 받은 데이터를 압축하여 표준 출력으로 내보낼 수 있으며(gunzip은 반대 동작),[19] 파일 압축뿐만 아니라 다양한 목적으로 사용할 수 있다.

HTTP 1.1에는 데이터를 압축하여 전송량을 줄이는 기능이 있는데, gzip은 그 때의 압축 형식 중 하나로 사용되고 있다.[21]

6. 호환성

gzip은 zip, compress, compress -H, pack으로 압축된 파일을 풀 수 있다. ZIP 파일의 경우, DEFLATE 방식으로 압축되고 파일이 하나만 포함된 경우에만 풀 수 있다.[19] gzip이 설치된 시스템에서는 gunzip, zcat, uncompress 명령어가 gzip 명령어에 대한 하드 링크로 존재하는 경우가 많으며, 리눅스 표준 기반(Linux Standard Base)에서도 지정 명령어이다.[23]

7. 미디어 타입

gzip의 공식 미디어 타입은 `application/gzip`이다.[1] 2012년 8월에 발행된 에서 정의되어 IANA에도 정식으로 등록되었다.[25] 이전에는 `application/x-gzip`나 `application/x-gzip-compressed` 등이 사용되었다.[25]

tar로 아카이브된 경우에는 비공식적으로 `application/x-tar-gz`도 사용된다.

8. 손상 복구

아카이브에서 손상된 부분 이전에 있는 블록의 데이터는 일반적으로 완전히 읽을 수 있다. 이후에 위치하고 손상으로 파괴되지 않은 블록의 데이터는 어려운 방법을 통해 복구할 수 있다.

9. 자연어 처리

2023년에 발표된 연구에 따르면, gzip과 같은 간단한 무손실 압축 기술을 k-최근접 이웃 분류기와 결합하여 자연어 처리에서 딥러닝 모델의 매력적인 대안으로 활용할 수 있다. 이 접근 방식은 GPU 하드웨어가 필요하지 않는 등 낮은 리소스 요구 사항을 가지므로, BERT와 같은 기존 접근 방식을 능가하는 것으로 나타났다.[15]

참조

[1] 간행물 The 'application/zlib' and 'application/gzip' Media Types Internet Engineering Task Force 2014-03-01
[2] 웹사이트 GZIP file format specification version 4.3 https://tools.ietf.o[...] Internet Engineering Task Force 1996-05
[3] 웹사이트 GNU Gzip https://www.gnu.org/[...] 2015-10-11
[4] 웹사이트 GNU Gzip: Advanced usage https://www.gnu.org/[...] 2012-11-28
[5] 웹사이트 Can gzip compress several files into a single archive? http://www.gzip.org/[...] 2010-01-27
[6] 웹사이트 tarball, The Jargon File, version 4.4.7 http://www.catb.org/[...] 2010-01-27
[7] 웹사이트 GNU Gzip https://www.gnu.org/[...] 2024-04-03
[8] 웹사이트 OpenBSD gzip(1) manual page https://man.openbsd.[...] OpenBSD 2018-02-04
[9] 웹사이트 gzip http://man.freebsd.o[...] Man.freebsd.org 2014-03-01
[10] 웹사이트 pigz: A parallel implementation of gzip for modern multi-processor, multi-core machines https://zlib.net/pig[...] 2018-12-23
[11] 문서 Recovering a damaged .gz file – Jean-loup Gailly, GZip.org https://web.archive.[...]
[12] 웹사이트 How To Extract / Unzip tar.gz Files From Linux Command Line https://phoenixnap.c[...] 2019-11-14
[13] 웹사이트 Compressing the Web http://blogs.msdn.co[...] Microsoft 2015-11-02
[14] 웹사이트 Comparison Tool: 7-zip vs bzip2 vs gzip http://compressionra[...] 2014-11-01
[15] 논문 '"Low-Resource" Text Classification: A Parameter-Free Classification Method with Compressors' https://aclanthology[...] Association for Computational Linguistics 2023-07
[16] 웹사이트 The gzip home page http://www.gzip.org 2003-07-27
[17] 웹사이트 Gzip - GNU Project - Free Software Foundation https://www.gnu.org/[...] GNUプロジェクト 2024-05-04
[18] 웹사이트 gzipとは - 意味をわかりやすく - IT用語辞典 e-Words https://e-words.jp/w[...] IT用語辞典 e-Words 2024-05-04
[19] 웹사이트 GNU Gzip https://www.gnu.org/[...] GNUプロジェクト 2024-05-04
[20] 웹사이트 GNU tar 1.35 https://www.gnu.org/[...] GNUプロジェクト 2024-05-04
[21] 웹사이트 RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1 https://www.rfc-edit[...] RFC Editor 2024-05-04
[22] 웹사이트 Linux File Compression: gzip, bzip2, and xz Unveiled {{!}} Linux Journal https://www.linuxjou[...] Linux Journal 2024-05-04
[23] 문서 Linux Standard Base https://refspecs.lin[...]
[24] 웹사이트 Overview - GNU Gzip http://www.gnu.org/s[...] Free Software Foundation 2013-06-11
[25] 웹사이트 RFC 6713 - The 'application/zlib' and 'application/gzip' Media Types https://datatracker.[...] Internet Engineering Task Force 2012-08
[26] 웹사이트 HTTP の圧縮 - HTTP {{!}} MDN https://developer.mo[...] Mozilla Foundation 2024-05-03
[27] 웹사이트 gzip compression (gzip 圧縮) - MDN Web Docs 用語集: ウェブ関連用語の定義 {{!}} MDN https://developer.mo[...] Mozilla Foundation 2024-05-03
[28] 웹사이트 Usage Statistics of Gzip Compression for Websites, May 2024 https://w3techs.com/[...] Q-Success 2024-05-03
[29] 웹인용 How are zlib, gzip and Zip related? What do they have in common and how are they different? http://stackoverflow[...] 2016-06-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com