미국의 지역 번호 시스템 ZIP Code에 대한 내용은 우편번호 문서
의 미국 부분을
, 대용량 저장장치에 대한 내용은 ZIP 드라이브 문서
참고하십시오.1. 개요
미국 위스콘신의 필 캐츠(Philip Walter Katz, 1962~2000)가 1989년 만든 무손실 압축 포맷. 정확히 말하자면 ZIP 포맷은 여러개의 파일을 압축해서 하나의 파일로 만들기 위한 컨테이너 포맷이고, ZIP 내부의 데이터 압축 알고리즘은 주로 Deflate를 사용한다.2. 역사
원래 정식 명칭은 PKZIP이며(필 캐츠의 이름에서 따왔다. 회사명도 PKWARE.) 파일 헤더에는 PK라는 문자열이 들어간다. MS-DOS 시절 프로그램 이름도 pkzip.exe(압축하는 프로그램) pkunzip.exe(압축 해제하는 프로그램) 이었다. 압축효율은 그당시 경쟁 제품이였던 ARJ나 LHarc보다는 조금 나빴지만, 압축 속도가 빨랐고 압축 포맷을 퍼블릭 도메인으로 공개하여 빠른 속도로 보급되었다.특히 윈도우 시대에 접어들면서 경쟁 프로그램들이 변변치 않은 와중에 WinZip라는 편리한 프로그램이 두각을 나타내면서 사실상 업계 표준 포맷으로 자리잡게 된다. 다만 WinZip을 만든 회사는 PKWARE가 아닌 다른 회사이다. 필 캐츠는 윈도우에 비판적인 입장이었을 뿐만 아니라 그의 말년에 음주운전으로 자주 경찰서를 들락거릴 정도로 알코올 의존증이 심해지면서 윈도우용 PKZIP를 내놓는 것이 늦어지면서 큰 재미를 보지 못했다.[1]
하지만, PKWARE사는 현재도 ZIP 포맷의 확장 정의를 지속적으로 관리하고 있으며, 자사의 홈페이지를 통해서 이를 공개하고 있다. ZIP 표준 포맷 문서
ZIP 포맷은 기본적으로 MS-DOS를 위해서 만들어진 포맷[2]이다. 하지만 이후 지속적인 확장을 통해서 다른 운영체제도 지원[3]하고, 압축 해제 프로그램이 오픈소스이기 때문에, 별도의 프로그램을 설치할 필요 없이 운영 체제에서 압축/해제 기능을 넣은 경우가 많다.
유닉스나 리눅스에서는 1990년대부터 운영 체제 패키지에 ZIP 압축/해제 프로그램을 기본으로 포함해 제공하는 배포판들이 많다.(unzip이 대표적.)[4] Windows도 Windows Me부터는 탐색기에서 ZIP 파일을 폴더처럼 열 수 있고[5], 압축/해제를 모두 지원하고 있으며, 맥도 운영 체제에서 기본적으로 ZIP 파일의 압축 및 해제를 지원한다.
유니코드 파일 지원이 정의된 것은 2006년으로 늦은 편. 게다가 지원하지 않는 프로그램도 많기[6] 때문에, 일찌감치 유니코드를 제대로 처리하기 시작한 RAR 이나 7Z에 비하면 호환성이 떨어지는 편. 이 외에도 유니코드 파일명을 확장 필드에 저장하는 방식도 있는데, 이 방식으로 압축하면 글자도 깨지지 않을 뿐더러 호환성도 훨씬 좋아진다. 물론 파일 이름 수의 합만큼 용량이 늘어나긴 하지만, 수십~수백 KB 정도 늘어나는 정도로 걱정할 시대는 지나간 지 오래다. 빵집에서는 이 방식으로 압축해도 파일명이 깨지는 버그가 있지만, 아직까지 빵집을 쓰는 사람은 거의 없기 때문에 큰 문제는 없다.
ZIP 포맷은 처음에 Deflate 알고리즘만 지원했지만, 이후 bzip2, LZMA 와 같은 최신 압축 알고리즘도 지원하도록 표준에 포함시켰으며, 요즈음 업데이트 되는 최신 압축 프로그램들은 대부분 이 알고리즘의 압축 해제를 지원한다.
Java의 .jar나 MS 오피스 2007 이후부터 기본적으로 지원되는 .docx, .xlsx, .pptx 형식의 파일도 내부적으로 여러개의 파일들을 ZIP 형식으로 묶고 확장자만 바꿔놓은 것이다. 파일의 사용되는 목적이 다르기 때문에 이를 구분하기 위해 다른 확장자로 정의되어 있는 것이라 이 파일들도 압축 프로그램으로 압축 해제할 수 있다. 윈앰프, Windows Media Player, 곰플레이어, 팟플레이어 등의 스킨파일들도 전부 ZIP 포맷으로 압축되어 있다.
multi platform지원이되는 zip 압축 및 압축 해제는 info-zip을 찾아보면 된다. 이곳에서 지원하는 운영 체제는 microcomputer에서 Cray 슈퍼컴퓨터까지이며, 거의 모든 버전의 UNIX, Linux, VMS, OS/2, Windows 9x/NT/etc. (a.k.a. Win32), Windows 3.x, Windows CE, MS-DOS, AmigaDOS, Atari TOS, Acorn RISC OS, BeOS, Mac OS, SMS/QDOS, MVS and OS/390 OE, VM/CMS, FlexOS, Tandem NSK 과 Human68K (Japanese)를 지원하며, LynxOS, TOPS-20, AOS/VS and Novell NLMs 등의 오래된 운영 체제도 지원된다. Unix, OS/2, Win32 and Win16의 Shared libraries (DLLs)도 지원하며, Win32, Win16, WinCE and Mac OS의 GUI도 지원한다.
3. 기타
- ZIP 포맷에서 파일을 압축하지 않고, 원본 그대로 저장할 경우 압축 알고리즘은 0으로 저장되고, 일반적으로 제일 많이 사용하는 Deflate 알고리즘은 8번을 사용한다. 즉, 거의 사용하지 않기는 하지만, 1번부터 7번까지의 압축 알고리즘도 존재한다. 공식 문서에서 정의된 다른 알고리즘들에는 LZMA, BZIP2, PPMd, WavePack과 LZW의 변형인 "Implode", "Shrink"가 있다.
- Winzip 에서는 Jpeg 파일을 30%까지 줄일 수 있는 WinzipJpeg 압축 알고리즘과, Wav 파일을 WavPack압축 알고리즘을 이용하여 압축하는 독특한 형태의 압축 알고리즘을 지원한다.
- ZIP 포맷은 DOS 시절에 개발되었기 때문에 4GB(232)를 초과하는 용량의 파일은 처리하지 못했지만, 이후 ZIP64라고 불리는 확장된 정의를 통해서 264바이트까지 처리할 수 있다.
- 반디집에서 7Z와 함께 적극적으로 활용하고 있는 포맷이다. 멀티코어를 제대로 활용하는데다가 ZIP64, UTF-8, NTFS 날짜체계, 고속 아카이빙, AES256 암호화와 같은 선진적인 기술을 잔뜩 도입했다. 참고로 직접적인(?) 경쟁 프로그램인 알집은 멀티코어랑 64비트도 제대로 지원하지 않는 주제에 4 GiB를 넘어가면 EGG 포맷을 강제하는 등의 이해할 수 없는 정책을 펼치고 있어서 컴덕들의 기피대상이 된 지 오래다.
- ZIP Bomb, 일명 ZIP 폭탄이라는 인터넷 장난이 있다. 대략 겉보기에는 10~20MB 남짓의 작은 압축파일이지만 실제로는 그 안에 수십에서 수백 테라바이트, 심지어는 수십 요타바이트 단위에까지 이르는 엄청난 크기의 파일이 저장되어 있으며 아무것도 모르고 그걸 압축해제 시켰다가는, 혹은 백신 프로그램이 그 파일을 자동으로 검사하게 되면 그대로 컴퓨터가 망가지는 위험한 물건이다. 이를 방지하기 위해 최근의 압축 프로그램은 압축을 풀기 전 남은 하드디스크 용량보다 압축해제 파일이 클 경우 경고 메시지를 띄우니 안심하자.
- 'ZIP'에 우편번호라는 뜻이 있기 때문에 Microsoft Windows 영문판에 ZIP파일 압축을 우편번호 압축이라고 표기한 표기 오류가 있었다.
[1] 필 캐츠는 2000년 호텔방에서 세상을 떠났다. 마지막까지 빈 술병을 들고 있었으며, 검시관이 밝힌 필 캐츠의 사망 원인은 알콜 의존증에 의한 급성 췌장 출혈이다.[2] 파일의 시간 정보가 MS-DOS 포맷과 동일하다.[3] 유닉스의 파일 시스템 정보라든가, Windows의 NTFS 파일 시간 정보라든가[4] 물론, 따로 깔아야 하는 리눅스 배포판/유닉스도 많다.[5] 다만 Windows Me에서는 기본 설정으로 설치 시 설치되지 않았으며, 수동으로 설치해 줘야 했다. Windows XP부터는 기본 설정으로도 자동으로 설치된다. 원래는 Microsoft Plus 98에 추가된 기능이였다.[6] 과거 윈도우 탐색기 내장 프로그램은 하위 호환성을 위해서 MS-DOS와 동일한 코드페이지만을 지원했다, 그에 비해 유닉스/리눅스/맥 계열 프로그램은 무조건 유니코드(UTF-8) 코드페이지를 기본적으로 사용하였기 때문에, MBCS파일명으로 된 파일을 서로 주고 받으면 파일명이 깨진다.