Jump to content

compress

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

compress / uncompress
Original author(s)Spencer Thomas
Initial releaseFebruary 1985; 39 years ago (1985-02)
Operating systemUnix, Unix-like, IBM i
TypeCommand
compress .Z
Filename extension
.Z
Internet media type
application/x-compress
Developed bySpencer Thomas
Type of formatdata compression

compressLZW 압축 알고리듬을 기반으로 하는 유닉스 쉘 압축 프로그램입니다.[1] gzipbzip2와 같은 보다 최신 압축 유틸리티와 비교된, compress는 훨씬 더 낮은 압축 비율을 희생하면서 더 적은 메모리 사용량으로 더 빠르게 수행됩니다.

uncompress는 파일이 compress 유틸리티를 사용하여 압축된 후에 원래 상태로 복원할 것입니다. 만약 파일이 지정하지 않으면, 표준 입력이 표준 출력으로 압축 해제될 것입니다.

다가오는 POSIX단일 유닉스 사양 개정판에서, gzip 형식으로 사용되는 DEFLATE 알고리듬이 해당 유틸리티에서 지원될 예정입니다.[2]

Description of program

compress에 의해 압축된 파일은 전형적으로 ".Z" 확장자가 지정됩니다 (확장자 ".z"를 사용된 이전 프로그램을 모델로 함). 대부분의 tar 프로그램은 명령줄 옵션 "-Z"가 주어질 때 compress를 통해 데이터를 파이프할 것입니다. (tar 프로그램 자체는 압축하지 않습니다; 그것은 단지 하나의 테이프 아카이브에 여러 파일을 저장합니다.)

파일은 uncompress를 사용하여 원래 상태로 반환될 수 있습니다. uncompress의 보통 동작은 파일의 압축 해제된 복사본을 만드는 것뿐만 아니라, 압축된 파일의 타임스탬프 및 기타 속성을 복원하는 것입니다.

다른 시스템에서 compress에 의해 생성된 파일에 대해, uncompress는 9에서 16비트 압축을 지원합니다.

History

compress에 사용된 LZW 알고리듬은 1983년 Sperry Research Center에서 특허를 받았습니다. Terry Welch는 1984년에 알고리듬에 대한 IEEE 기사를 발표했지만,[3] 자신이 알고리듬에 대한 특허를 신청했다는 사실을 언급하지 않았습니다. 유타 대학교의 Spencer Thomas는 LZW 알고리듬에 대한 특허가 출원 중이라는 사실을 깨닫지 못한 채 이 기사를 가져와 1984년에 compress을 구현했습니다. GIF 이미지 형식은 역시 이러한 방식으로 LZW 압축을 통합했었고, Unisys는 나중에 GIF 구현에 대한 로열티를 청구했습니다. Joseph M. Orost는 팀을 이끌고 Thomas et al.과 함께 compress의 '최종'(4.0) 버전을 만들기 위해 연구했고 1985년에 'net.sources' USENET 그룹에 자유 소프트웨어로 공개했습니다. 1985년에 미국 특허 4,558,302가 부여되었고, 이것이 로열티를 지불하지 않고 compress을 사용할 수 없는 이유이며, 결국 Unisys에 합병된 Sperry Research에 인수되었습니다.

compress는 Unisys 특허에 적용되는 LZW 알고리듬을 사용하기 때문에 특정-사용자 그룹에서 인기가 떨어졌습니다 – 이것 때문에, gzipbzip2는 대안적인 알고리듬으로 인해, 더 나은 파일 압축과 함께, 리눅스-기반 운영 시스템에서 인기가 높아졌습니다. compress는, 어쨌든, 유닉스BSD 시스템에서 존재를 유지했고 compressuncompress 명령도 IBM i 운영 시스템으로 이식되었습니다.[4]

미구 LZW 특허는 2003년에 만료되었으므로, 그것은 현재 미국에서 퍼블릭 도메인입니다. 전 세계적으로 LZW에 대한 모든 특허도 만료되었습니다 (Graphics Interchange Format#Unisys and LZW patent enforcement를 참조하십시오).

다가오는 POSIX단일 유닉스 사양 개정판에서, gzip 형식으로 사용되는 DEFLATE 알고리듬이 그들 유틸리티에서 지원될 예정입니다.

Special output format

출력 바이너리는 비트 그룹으로 구성됩니다. 각 비트 그룹은 고정된 비트의 양 (9-16)을 갖는 코드로 구성됩니다. 각 그룹 (마지막 제외)은 비트의 양에 8을 곱하고 오른쪽에 0을 채워 정렬되어야 합니다. 마지막 그룹은 8과 0으로 채워져서 정렬되어야 합니다. 여러분은 ncompress 문제]에서 더 많은 정보를 찾을 수 있습니다.

예제:

여러분이 10개의 9비트 코드, 5개의 10비트 코드 및 13개의 11비트 코드를 출력하기를 원합니다. 여러분은 이제 출력하려는 3개의 비트 그룹: 100비트, 50비트 및 143비트를 가집니다.
  • 첫 번째 그룹은 72비트 (9비트 * 8)로 정렬되기 위해 데이터의 100비트 + 영을 채워 넣은 44비트여야 합니다.
  • 두 번째 그룹은 80비트 (10비트 * 8)로 정렬되기 위해 데이터 50비트 + 영을 채워 넣은 30비트여야 합니다.
  • 세 번째 그룹은 8비트 (이것이 출력에서 마지막 그룹이므로 1바이트만)로 정렬하려면 데이터의 143비트 + 영을 채워 넣은 1비트여야 합니다.

그것은 실제로 버그입니다. LZW는 임의의 정렬이 필요하지 않습니다. 이 버그는 원래 UNIX compress, ncompress, gzip 및 Windows 포트의 일부입니다. 그것은 35년 이상 존재합니다. 모든 application/x-compress 파일은 이 버그를 사용하여 생성되었습니다. 따라서 우리는 그것을 출력 사양에 포함해야 합니다.

일부 compress 구현은 초기화되지 않은 버퍼의 임의 비트를 정렬 비트로 씁니다. 정렬 비트가 0일 것이라는 보장은 없습니다. 따라서 100% 호환성 측면에서 decompressor는 그냥 정렬 비트 값을 무시해야 합니다.

See also

References

  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.

External links