맨위로가기

Compress

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

1. 개요

Compress는 LZW 알고리즘을 사용한 파일 압축 유틸리티로, 1980년대 초에 개발되었다. LZW 알고리즘에 대한 특허 문제와 gzip, bzip2 등 더 나은 압축률을 가진 대안의 등장으로 인해 사용이 줄었지만, Unix 및 BSD 시스템에서 여전히 사용되고 있으며, IBM i 운영 체제로도 이식되었다. Compress는 .Z 확장자를 사용하며, uncompress 명령어를 통해 압축을 해제할 수 있다. 2003년 미국의 LZW 특허 만료로 인해 현재 미국에서는 퍼블릭 도메인에 속한다.

더 읽어볼만한 페이지

  • 유닉스 보관 및 압축 관련 유틸리티 - Gzip
    gzip은 DEFLATE 알고리즘을 기반으로 데이터를 압축하는 파일 형식으로, 매직 넘버, 헤더, 압축된 페이로드 등을 포함하며, 단일 파일 압축에 주로 사용되고 HTTP 압축 및 다양한 응용 분야에서 활용된다.
  • 유닉스 보관 및 압축 관련 유틸리티 - Bzip2
    Bzip2는 줄리안 세워드가 개발한 자유 소프트웨어로, 버로우즈-휠러 변환, MTF 변환, 허프만 부호화 등의 압축 기법을 사용하여 gzip이나 ZIP보다 높은 압축률을 제공하지만 압축 속도가 느린 블록 정렬 압축 알고리즘이다.
  • 압축 소프트웨어 - WinRAR
    WinRAR은 RAR 및 ZIP 등 다양한 파일 형식을 지원하며, 압축 파일 복구, 강력한 암호화 등의 기능을 제공하는 셰어웨어 압축 유틸리티이다.
  • 압축 소프트웨어 - ARJ
    ARJ는 다양한 소프트웨어 유틸리티에서 압축 해제가 가능한 파일 포맷으로, macOS에서는 독립 실행형 유틸리티를 통해 압축을 해제할 수 있다.
  • 표준 유닉스 프로그램 - AWK
    AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다.
  • 표준 유닉스 프로그램 - Rm (유닉스)
    유닉스 명령어 `rm`은 파일을 삭제하는 데 사용되며, 옵션을 통해 삭제 동작을 제어하고 디렉터리를 재귀적으로 삭제할 수 있지만, 잘못 사용하면 시스템에 심각한 손상을 초래할 수 있어 주의가 필요하며 안전 장치나 휴지통 기능 등의 대안이 존재한다.
Compress - [IT 관련 정보]에 관한 문서
compress
종류명령
개발자스펜서 토머스
출시일1985년 2월
운영 체제유닉스, 유닉스 계열, IBM i
compress .Z 파일 형식
확장자.Z
마임 유형application/x-compress
소유자스펜서 토머스
종류데이터 압축
매직 넘버\x1f\x9d

2. 역사

(압축)는 1984년 유타 대학교의 스펜서 토마스가 개발하였고, 1985년 조셉 M. 오로스트 팀이 'net.sources' USENET 그룹에 자유 소프트웨어로 배포하였다.[4] 그러나 에 사용된 LZW 알고리즘은 1983년 스페리 연구 센터에서 특허를 받았고, 1985년에 특허가 승인되면서 로열티 문제가 발생하였다.[4] POSIX.1-2024 현재 ''compress''는 gzip에 사용된 DEFLATE 알고리즘을 지원한다.[6]

2. 1. LZW 알고리즘 특허 문제

1983년 스페리 연구 센터에서 LZW 알고리즘에 대한 특허를 획득했다.[4] 1984년 테리 웰치는 LZW 알고리즘에 대한 IEEE 논문을 발표했지만, 특허 출원 사실을 언급하지 않았다. 유타 대학교의 스펜서 토마스는 이 논문을 바탕으로 compress를 구현했으나, 특허 출원 사실을 인지하지 못했다. GIF 이미지 형식도 LZW 압축을 사용하면서, 이후 유니시스는 GIF 구현에 대한 로열티를 요구하기 시작했다. 1985년, 스페리 연구 센터 (후에 유니시스에 합병)는 LZW 알고리즘에 대한 특허를 승인받았고, compress는 로열티 없이 사용할 수 없게 되었다.

2. 2. 특허 만료와 대안의 등장

compress영어에 사용된 LZW 알고리즘은 유니시스의 특허를 받았기 때문에 특히 특정 사용자 그룹에서 인기가 떨어졌다.[4] 이로 인해 gzip 및 bzip2는 더 나은 파일 압축과 함께 대체 알고리즘으로 인해 리눅스 기반 운영 체제에서 인기가 높아졌다. 그러나 ''compress''는 Unix 및 BSD 시스템에서 계속 사용되었으며, 및 명령은 IBM i 운영 체제로도 이식되었다.[5]

미국 LZW 특허는 2003년에 만료되어 현재 미국에서 퍼블릭 도메인에 속한다. LZW에 대한 전 세계 모든 특허도 만료되었다 (GIF#유니시스와 LZW 특허 집행 참조).

2. 3. 한국에서의 사용

한국에서도 초기 유닉스 시스템과 함께 compress가 널리 사용되었으나, 현재는 gzip 등 다른 압축 유틸리티가 주로 사용된다. 유닉스BSD 시스템에서는 여전히 ''compress''가 사용되고 있으며, ''compress'' 및 ''uncompress'' 명령어는 IBM i 운영 체제로도 이식되었다.[5] 일부 서버 환경이나 오래된 시스템에서는 compress를 사용하는 경우가 남아있다.

3. 기술적 특징

`compress`는 LZW 압축 알고리즘을 사용한다. 압축된 파일은 일반적으로 파일 확장자 ".Z"를 갖는다. `.Z` 파일 확장자는 pack의 파일 확장자.z와의 충돌을 피하기 위해 대문자로 만들어졌다.

대부분의 tar 프로그램은 "`-Z`" 옵션을 통해 `compress`로 데이터를 파이프 처리하여 여러 파일을 묶고 압축하는 데 사용된다.[7] `uncompress`를 사용하여 압축을 해제할 수 있으며, 압축 해제된 파일의 복사본 생성뿐만 아니라 압축된 파일의 타임스탬프 및 기타 속성도 복원할 수 있다. 다른 시스템에서 `compress`에 의해 생성된 파일의 경우, `uncompress`는 9~16비트 압축을 지원한다.

3. 1. 출력 형식의 특징 (버그)

compress의 출력 바이너리는 비트 그룹으로 구성된다. 각 비트 그룹은 고정된 비트 수(9~16)의 코드로 구성된다. 마지막 그룹을 제외한 각 그룹은 코드당 비트 수에 8을 곱한 값에 맞춰 정렬되고 오른쪽에 0으로 채워진다. 마지막 그룹은 8비트 옥텟에 맞춰 정렬되고 0으로 채워진다. 자세한 정보는 ''ncompress'' GitHub 저장소의 문제에서 찾을 수 있다.[7]

예시:

: 출력에 9비트 코드 10개, 10비트 코드 5개, 11비트 코드 13개가 있다고 가정한다. 90비트, 50비트, 143비트의 데이터를 포함하는 3개의 그룹이 출력된다.

:* 첫 번째 그룹은 90비트의 데이터와 72비트(9비트 × 8)에 맞게 정렬하기 위한 54비트의 0 패딩으로 구성된다.

:* 두 번째 그룹은 50비트의 데이터와 80비트(10비트 × 8)에 맞게 정렬하기 위한 30비트의 0 패딩으로 구성된다.

:* 세 번째 그룹은 143비트의 데이터와 8비트(출력의 마지막 그룹이므로)에 맞게 정렬하기 위한 1비트의 0 패딩으로 구성된다.

이것은 실제로 버그이다. LZW는 정렬을 필요로 하지 않는다. 이 버그는 35년 이상 존재했으며, 원래 UNIX의 ''compress'', ''ncompress'', ''gzip'' 및 Windows 포트에 있었다. 모든 ''application/x-compress'' 파일은 이 버그를 사용하여 생성되었다.

일부 압축 구현은 초기화되지 않은 버퍼에서 임의의 비트를 패딩에 쓴다. 패딩이 0으로 채워진다는 보장은 없다. 호환성을 위해 압축 해제기는 패딩의 값을 무시해야 한다.

4. 표준화 및 지원 현황

compress는 1994년 X/Open CAE 사양에서 표준화되었고,[8] 이후 The Open Group Base Specifications, Issue 6 및 7에서 추가로 표준화되었다.[9] 리눅스 표준 기반은 compress를 필요로 하지 않는다.[10]

compress는 종종 리눅스 배포판에서 기본적으로 설치되지 않지만, 추가 패키지에서 설치할 수 있다.[11] FreeBSD, OpenBSD, MINIX, Solaris 및 AIX에서 사용할 수 있다.

compress는 점대점 프로토콜(PPP) 및 HTTP/1.1에서 허용되지만, 더 나은 deflate/gzip을 사용할 수 있기 때문에 현대적인 배포 환경에서는 거의 사용되지 않는다.

gunzip 유틸리티는 .Z 파일을 압축 해제할 수 있다.[12]

5. 확장자

`compress`로 압축된 파일은 일반적으로 파일 확장자.Z를 가진다. 이전의 pack 프로그램은 파일 확장자.z를 사용했는데, `compress`는 확장자 충돌을 피하기 위해 대문자 .Z를 사용한다.

참조

[1] 웹사이트 ncompress: a public domain project http://ncompress.sou[...] 2014-07-30
[2] 웹사이트 compression - What's the difference between gzip and compress? https://unix.stackex[...]
[3] 웹사이트 Large Text Compression Benchmark http://mattmahoney.n[...]
[4] 논문 A technique for high performance data compression https://www.cs.duke.[...]
[5] 웹사이트 IBM System i Version 7.2 Programming Qshell https://www.ibm.com/[...] 2020-09-05
[6] 웹사이트 compress https://pubs.opengro[...] opengroup 2024-11-02
[7] 웹사이트 compression with 9 bits don't work · Issue #5 · vapier/ncompress https://github.com/v[...] 2024-09-17
[8] 간행물 X/Open CAE Specification Commands and Utilities Issue 4, Version 2 https://pubs.opengro[...] opengroup.org 1994
[9] 문서 cu compress SUS6
[10] 간행물 Chapter 17. Commands and Utilities https://refspecs.lin[...] linuxfoundation.org
[11] 문서 ncompress https://pkgs.org/dow[...] pkgs.org
[12] 웹사이트 GNU Gzip https://www.gnu.org/[...] 2023-02-05
[13] 웹인용 ncompress: a public domain project http://ncompress.sou[...] 2014-07-30



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

문의하기 : help@durumis.com