지퍼를 채우다

gzip
gzip(잘못)
Gzip-Logo.svg
원본 작성자
개발자GNU 프로젝트
초기 릴리즈1992년 10월 31일; 29년(1992-10-31)
안정적 해제
1.11 (GNU Gzip)[1] / 2021년 9월 3일; 6개월(2021-09-03)
리포지토리git.savannah.gnu.org/cgit/gzip.git
기록 위치C
운영 체제Unix-like, Plan 9, Inperno
유형데이터 압축
면허증GPLv3
웹사이트www.gnu.org/software/gzip/

gzip파일 형식파일 압축과 압축 해제에 사용되는 소프트웨어 응용 프로그램이다. 프로그램은 장루프 게일리마크 애들러가 초기 유닉스 시스템에서 사용하는 압축 프로그램에 대한 무료 소프트웨어 대체물로 만든 것으로 GNU('g'는 'GNU'에서 나온 것)가 사용하도록 고안됐다.버전 0.1은 1992년 10월 31일에 처음으로 공개되었고 버전 1.0은 1993년 2월에 그 뒤를 이었다.

gzip 포맷의 감압은 웹 프로토콜, 데이터 교환 및 ETL (표준 파이프 내) 어플리케이션의 중요한 특징인 스트리밍 알고리즘으로 구현될 수 있다.

파일 형식

gzip(파일 형식)
파일 이름 확장명
.gz
인터넷 미디어 유형
애플리케이션/gzip[2]
동일 유형 식별자(UTI)org.gnu.gnu-zip-zip-diff
매직넘버1f 8b
개발자장루프 게일리와 마크 애들러
형식 유형데이터 압축
오픈 포맷?
웹사이트아마존닷컴(gzip.org)

gzip은 LZ77허프먼 코딩의 조합인 DEFLAT 알고리즘을 기반으로 한다.DEFLATE는 LZW 및 기타 특허 번호 데이터 압축 알고리즘을 대체하기 위한 것으로, 당시에는 압축 및 기타 인기 보관기의 사용성을 제한했다.

"gzip"은 gzip 파일 형식을 가리키는 데에도 자주 사용되는데, 다음과 같다.

  • 매직 넘버를 포함하는 10바이트 헤더 (1f 8b)), 압축 방법 (08DEFLATE), 1바이트 헤더 플래그, 4바이트 타임스탬프, 압축 플래그 및 운영 체제 ID.
  • 헤더 섹션에 대한 원본 파일 이름, 주석 필드, "추가" 필드 및 CRC-32 체크섬의 하단을 포함하여 헤더 플래그에서 허용하는 추가 헤더 선택 사항.[3]
  • DEFLAT-압축 탑재체를 포함한 차체
  • CRC-32 체크섬과 압축되지 않은 원래 데이터의 길이인 modulo [4]2를32 포함하는 8바이트 바닥글
Targzip.svg

그것의 파일 형식도 그러한 스트림을 여러 개 연결할 수 있도록 허용하지만(gzip 파일은 원래 하나의 파일인 것처럼 간단히 압축 해제된다),[5] gzip은 보통 하나의 파일만을 압축하는 데 사용된다.[6]압축된 아카이브는 일반적으로 파일의 컬렉션을 하나의 tar 아카이브(tarball이라고도 함)[7]로 조립한 다음 해당 아카이브를 gzip으로 압축하여 생성된다.최종 압축 파일에는 일반적으로 .tar.gz 또는 .tgz 확장자가 있다.

gzip은 DEFLATE를 사용하는 집 아카이브 형식과혼동해서는 안 된다.ZIP 형식은 외부 아카이브기 없이 파일 컬렉션을 담을 수 있지만, 파일을 개별적으로 압축하고 파일 간 중복성(솔리드 압축)을 활용할 수 없기 때문에 동일한 데이터를 저장하는 압축 타르볼보다 압축성이 떨어진다.

구현

NetBSD Gzip / FreeB
개발자NetBSD 재단
리포지토리cvsweb.netbsd.org/bsdweb.cgi/src/usr.bin/gzip/
기록 위치C
유형데이터 압축
면허증단순화된 BSD 라이센스

그 프로그램의 다양한 구현이 기록되어 있다.가장 일반적으로 알려진 것은 Lempel-Ziv 코딩(LZ77)을 이용한 GNU 프로젝트의 이행이다.OpenBSD의 gzip 버전은 실제로 압축 프로그램인데, 압축 프로그램에는 OpenBSD 3.4에서 gzip 포맷에 대한 지원이 추가되었다.이 특정 버전의 'g'는 공짜를 의미한다.[8]FreeBSD, DragonFly BSDNetBSD는 GNU 버전 대신 BSD 라이센스 구현을 사용하며, 실제로는 GNU 구현 옵션과 호환되도록 의도된 zlib용 명령줄 인터페이스다.[9]이러한 구현은 원래 NetBSD에서 나왔으며, bzip2와 Unix pack 형식의 압축을 지원한다.

3-8% 더 나은 압축을 달성하는 대안적인 압축 프로그램은 Zopfli이다.필요한 압축 시간을 희생하여 보다 철저한 알고리즘을 사용하여 gzip 호환 압축을 달성한다.그것은 감압 시간에 영향을 주지 않는다.

pigzMark Adler가 작성한 는 gzip과 호환되며 사용 가능한 모든 CPU 코어 및 스레드를 사용하여 압축 속도를 높인다.[10]

손상회수

아카이브의 첫 번째 손상된 부분 이전의 블록 데이터는 일반적으로 완전히 읽을 수 있다.나중에 발생한 손상에 의해 철거되지 않은 블록의 데이터는 어려운 해결 방법을 통해 복구할 수 있다.[11]

파생상품 및 기타 용도

대부분의 Linux 배포에 포함된 tar 유틸리티는 z 옵션(예: tar -zxf file.tar.gz)을 전달하여 .tar.gz 파일을 추출할 수 있으며, 여기서-z감압을 지시한다.-x추출을 의미하고,-f추출할 압축된 아카이브 파일의 이름을 지정하십시오.선택적으로-v파일을 추출할 때 파일을 나열하십시오.[12]

zlib는 라이브러리 형식의 DEFLAT 알고리즘을 추상화한 것으로, API에서 gzip 파일 형식과 경량 데이터 스트림 형식 모두를 지원한다.zlib 스트림 형식, DEFLATE 및 gzip 파일 형식은 각각 RFC 1950, RFC 1951 및 RFC 1952로 표준화되었다.

gzip 포맷은 월드 와이드 웹에서 HTML과 다른 컨텐츠의 전송 속도를 높이기 위해 사용되는 기술인 HTTP 압축에 사용된다.RFC 2616에 명시된 HTTP 압축의 3가지 표준 형식 중 하나이다.또한 이 RFC는 zlib 형식("DEFLATE"라 함)을 지정하는데, gzip 형식은 헤더와 트레일러 형태로 11바이트의 오버헤드를 추가한다는 점을 제외하면 gzip 형식과 동일하다.그러나 여전히 gzip 형식은 Internet Explorer가 표준을 올바르게 구현하지 못하고 RFC 1950에 명시된 zlib 형식을 처리할 수 없기 때문에 zlib보다 권장되는 경우가 있다.[13]

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

1990년대 후반부터 블록 정렬 알고리즘을 기반으로 한 파일 압축 유틸리티인 bzip2는 gzip 대체품으로 어느 정도 인기를 얻었다.상당히 작은 파일(특히 소스 코드와 기타 구조화된 텍스트의 경우)을 생산하지만, 메모리와 처리 시간(최대 4배)의 비용이 든다.[14]

AdvanceCOMP 및 7-Zip은 gzip 자체보다 우수한 압축 비율을 가진 내부 DEFLAT 구현을 사용하여 gzip 호환 파일을 만들 수 있으며, 참조 구현에 비해 프로세서 시간이 더 많이 소요된다.[citation needed]

참고 항목

메모들

  1. ^ Meyering, Jim (3 September 2021). "gzip-1.11 released (stable)". The Free Software Foundation. Retrieved 4 September 2021.
  2. ^ The 'application/zlib' and 'application/gzip' Media Types. Tools.ietf.org. doi:10.17487/RFC6713. RFC 6713. Retrieved 1 March 2014.
  3. ^ Deutsch <ghost@aladdin.com>, L. Peter (May 1996). "GZIP file format specification version 4.3". tools.ietf.org. Retrieved 23 July 2019.
  4. ^ Jean-loup Gailly. "GNU Gzip". Gnu.org. Retrieved 11 October 2015.
  5. ^ "GNU Gzip: Advanced usage". Gnu.org. Retrieved 28 November 2012.
  6. ^ "Can gzip compress several files into a single archive?". Gnu.org. Retrieved 27 January 2010.
  7. ^ "tarball, The Jargon File, version 4.4.7". Catb.org. Retrieved 27 January 2010.
  8. ^ "OpenBSD gzip(1) manual page". Openbsd.org. OpenBSD. Retrieved 4 February 2018.
  9. ^ "gzip". Man.freebsd.org. 9 October 2011. Retrieved 1 March 2014.
  10. ^ Mark Adler (2017). "pigz: A parallel implementation of gzip for modern multi-processor, multi-core machines". zlib.net.
  11. ^ 손상된 .gz 파일 복구 – Jean-roop Gailly, GZip.org
  12. ^ "How To Extract / Unzip tar.gz Files From Linux Command Line". Knowledge Base by phoenixNAP. 14 November 2019. Retrieved 12 January 2022.
  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.

참조

  • RFC 1952 – GZIP 파일 형식 지정 버전 4.3

외부 링크