Gzip
"오늘의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