압축하다.

compress
압축/압축 해제
원저작자스펜서 토머스
초기 릴리즈1985년 2월, 37년 전(1985-02)
운영 체제Unix, Unix 계열, IBM i
유형명령어
.Z를 압축하다
파일 이름 확장자
.z
인터넷 미디어 유형
응용 프로그램/x-module
개발자스펜서 토머스
포맷의 종류data 압축

compressLZW 압축 [1]알고리즘을 기반으로 하는 Unix압축 프로그램입니다.gzipbzip2와 같은 최신 압축 유틸리티에 비해 압축률은 현저히 낮지만 압축 속도는 더 빠르고 메모리 사용량은 더 적습니다.

압축 해제 유틸리티는 압축 유틸리티를 사용하여 압축된 파일을 원래 상태로 복원합니다.파일을 지정하지 않으면 표준 입력이 표준 출력으로 압축 해제됩니다.

향후 POSIX 및 Single Unix Specification 리비전에서는 이러한 [2]유틸리티에서 gzip 형식으로 사용되는 DEFLATE 알고리즘이 지원될 예정입니다.

프로그램 설명

압축으로 압축된 파일에는 일반적으로 "라는 확장자가 붙습니다.Z" (확장자 ".z"를 사용한 이전 팩 프로그램을 따라 모델링됨)대부분의 tar 프로그램은 명령줄 옵션이 지정되면 압축을 통해 데이터를 파이프링합니다.-Z". (tar 프로그램 자체는 압축하지 않고 여러 파일을 하나의 테이프 아카이브에 저장합니다.)

압축 해제를 사용하여 파일을 원래 상태로 되돌릴 수 있습니다.압축 해제의 통상은, 파일의 비압축 카피를 작성하는 것 뿐만이 아니라, 압축 파일의 타임 스탬프나 그 외의 어트리뷰트를 복원하는 것입니다.

다른 시스템에서 압축으로 생성된 파일의 경우 압축 해제는 9 ~ 16비트 압축을 지원합니다.

역사

압축에 사용되는 LZW 알고리즘은 1983년 Sperry Research Center에 의해 특허 취득되었습니다.Terry Welch는 [3]1984년에 알고리즘에 관한 IEEE 기사를 발표했지만, 그가 알고리즘에 대한 특허를 출원했다는 사실은 언급하지 않았다.유타 대학의 Spencer Thomas는 LZW 알고리즘에 대한 특허가 출원 중이라는 사실을 깨닫지 못한 채 이 기사를 인용하여 1984년에 압축을 구현했습니다.또한 GIF 이미지 포맷은 이러한 방식으로 LZW 압축을 포함하였고 Unisys는 나중에 GIF 구현에 대한 로열티를 청구하였다.조지프 M.Orost는 팀을 이끌고 Thomas 등과 협력하여 압축의 '최종'(4.0) 버전을 만들어 '넷'에 무료 소프트웨어로 게시했다.1985년 USENET 그룹.1985년 455만8302건의 미국 특허가 부여돼 스페리리서치에 로열티를 지불하지 않고서는 압축기를 사용할 수 없었던 것도 이 때문이다.

compress는 Unisys 특허로 커버된 LZW 알고리즘을 사용하기 때문에 특정 사용자 그룹에서 인기가 떨어졌습니다.이 때문에 gzipbzip2는 대체 알고리즘과 파일 압축 성능 향상으로 Linux 기반 운영 체제에서 인기가 높아졌습니다.n Unix 및 BSD 시스템과 compressuncompress 명령도 IBM i 운영체제[4]이식되었습니다.

미국 LZW 특허는 2003년에 만료되었기 때문에 현재 미국에서 공개되고 있습니다.전 세계 LZW 특허도 모두 만료되었습니다('그래픽스 교환 포맷' 참조).UnisysLZW 특허 집행).

향후 POSIX 및 Single Unix Specification 리비전에서는 이러한 유틸리티에서 gzip 형식으로 사용되는 DEFLATE 알고리즘이 지원되도록 계획되어 있습니다.

특수 출력 형식

출력 바이너리는 비트 그룹으로 구성됩니다.각 비트 그룹은 고정 비트 수(9-16)를 가진 코드로 구성됩니다.각 그룹(마지막 제외)은 비트 양에 8을 곱하고 0을 오른쪽 패딩하여 정렬해야 합니다.마지막 그룹은 8로 정렬하고 0으로 채워야 합니다.자세한 내용은 ncompress를 참조하십시오.

예:

10개의 9비트 코드, 5개의 10비트 코드 및 13개의 11비트 코드를 출력하려고 합니다.출력하는 비트 그룹은 100비트, 50비트, 143비트 등 3개입니다.
  • 첫 번째 그룹은 72비트(9비트*8)로 정렬하려면 데이터 90비트 + 패딩 54비트여야 합니다.
  • 두 번째 그룹은 80비트(10비트*8)로 정렬하려면 데이터 50비트 + 패딩 30비트여야 합니다.
  • 세 번째 그룹은 8비트로 정렬하기 위해 143비트의 데이터 + 1의 0비트 패딩이어야 합니다(출력의 마지막 그룹이므로 1바이트만 해당).

그것은 사실 버그입니다.LZW는 정렬이 필요 없습니다.이 버그는 원래 UNIX 압축, ncompress, gzip 및 Windows 포트의 일부입니다.그것은 35년 이상 존재한다. 버그를 사용하여 모든 응용 프로그램/x 압축 파일이 생성되었습니다.따라서 출력 사양에 포함시켜야 합니다.

일부 압축 구현에서는 초기화되지 않은 버퍼에서 랜덤 비트를 정렬 비트로 씁니다.얼라인먼트 비트가 0이 된다는 보장은 없습니다.따라서 100% 호환성 감압기는 정렬 비트 값을 무시해야 합니다.

표준화 및 가용성

compress는 [5]1994년 X/Open CAE 사양에서 표준화되었으며, 더 나아가 개방형 그룹 기반 사양, 6호 및 [6]7호에서 표준화되었습니다.Linux Standard Base에는 [7]압축이 필요하지 않습니다.

compress는 Linux 배포판에 기본적으로 설치되지 않는 경우가 많지만 추가 [8]패키지에서 설치할 수 있습니다.compress는 FreeBSD, OpenBSD, MINIX, Solaris 및 AIX에서 사용할 수 있습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Frysinger, Mike. "ncompress: a public domain project". Retrieved 2014-07-30. Compress is a fast, simple LZW file compressor. Compress does not have the highest compression rate, but it is one of the fastest programs to compress data. Compress is the de facto standard in the UNIX community for compressing files.
  2. ^ "0001041: Encourage implementations to include better integrity checksum, compression and decompression utilities if possible". Austin Group Bug Tracker. Retrieved 2017-11-23.
  3. ^ Welch, Terry A. (1984). "A technique for high performance data compression" (PDF). IEEE Computer. 17 (6): 8–19. doi:10.1109/MC.1984.1659158.
  4. ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Retrieved 2020-09-05.
  5. ^ X/Open CAE 사양 명령유틸리티 문제 4, 버전 2(pdf), 1994, opengroup.org
  6. ^ compress – 셸 및 유틸리티 레퍼런스, 단일 UNIX 사양, The Open Group 버전 3
  7. ^ 17장 Linux Standard Base Core Specification 5.0.0 명령어유틸리티, linuxfoundation.org
  8. ^ ncompress, pkgs.org

외부 링크