zip
1. 개요
1. 개요
ZIP은 하나 이상의 파일을 하나의 압축 파일로 묶는 데 사용되는 아카이브 파일 형식이다. 파일 크기를 줄이는 무손실 데이터 압축 기능을 제공하며, 여러 파일을 하나로 묶어 관리 및 전송을 용이하게 한다. 필립 카츠가 개발했으며, 그의 회사인 PKWARE, Inc.가 1989년에 처음 공개했다.
이 형식은 DEFLATE 압축 알고리즘을 주로 사용하지만, 저장(압축 없음) 모드나 다른 알고리즘도 지원한다. ZIP 파일 내의 각 파일은 개별적으로 압축되어 저장되므로, 아카이브에서 특정 파일만 추출하거나 압축을 해제할 수 있다는 장점이 있다.
ZIP 형식은 초기에는 도스 환경에서 널리 사용되었으나, 이후 마이크로소프트 윈도우와 맥OS를 포함한 대부분의 운영 체제에 기본 지원되면서 사실상의 표준 아카이브 형식으로 자리 잡았다. 인터넷을 통한 파일 전송과 데이터 백업에 광범위하게 활용된다.
파일 확장자는 주로 .zip을 사용하며, MIME 타입은 application/zip이다. 관련 국제 표준은 ISO/IEC 21320-1:2015에 의해 문서화되어 있다.
2. 역사
2. 역사
zip 파일 형식은 필립 카츠가 개발했다. 그는 1980년대 후반 당시 널리 사용되던 압축 형식인 ARC의 제한 사항에 불만을 품고, 더 개선된 형식을 만들기로 결심했다. 이에 따라 그는 PKWARE 회사를 설립하고 1989년에 PKZIP 프로그램과 함께 zip 형식을 공개했다.
zip 형식의 초기 목표는 단일 아카이브에 여러 파일을 효율적으로 저장하고 압축하는 것이었다. 당시 대부분의 압축 도구는 하나의 파일만 처리할 수 있었지만, zip은 여러 파일을 하나의 컨테이너로 묶는 동시에 압축을 적용할 수 있었다. 이는 파일 전송과 보관을 크게 간소화했다.
zip 형식은 빠르게 인기를 얻었으며, PKZIP의 유틸리티와 함께 사실상의 표준 아카이브 형식으로 자리 잡았다. 그 성공 요인은 개방된 형식 사양과 무료로 배포된 압축 해제 프로그램 덕분이었다. 이로 인해 다른 소프트웨어 개발자들도 자신들의 응용 프로그램에 zip 지원을 쉽게 통합할 수 있게 되었다.
시간이 지나며 zip 형식은 다양한 개선을 거쳤다. 더 강력한 압축 알고리즘 지원, ZIP64 확장을 통한 대용량 파일 처리, 그리고 암호화 기능이 추가되었다. 이러한 진화 덕분에 zip은 수십 년이 지난 지금도 가장 널리 사용되는 아카이브 형식 중 하나로 남아 있다.
3. 파일 형식
3. 파일 형식
3.1. 파일 구조
3.1. 파일 구조
zip 파일의 내부 구조는 중앙 디렉터리와 로컬 파일 헤더, 파일 데이터로 구성된다. 각 파일 항목은 압축된 데이터와 그에 대한 메타데이터를 포함하는 로컬 파일 헤더로 시작한다. 이 헤더에는 파일명, 압축 방법, 수정 날짜 및 시간, 압축 전후의 파일 크기, CRC 체크섬 등의 정보가 담겨 있다. 파일 데이터는 이 헤더 바로 뒤에 이어서 저장된다.
파일의 끝 부분에는 중앙 디렉터리라는 구조가 위치한다. 이는 아카이브 내 모든 파일 항목에 대한 헤더 정보를 모아놓은 색인 역할을 한다. 중앙 디렉터리 헤더는 각 파일의 로컬 헤더와 유사한 정보를 가지지만, 파일 데이터에 대한 상대적 오프셋 위치를 추가로 포함한다. 이는 파일을 빠르게 찾고 목록을 생성하는 데 필수적이다.
중앙 디렉터리의 끝을 표시하는 엔드 오브 센트럴 디렉터리 레코드가 존재한다. 이 레코드는 중앙 디렉터리의 시작 위치와 크기, 아카이브 내 파일의 총 개수 등의 전역 정보를 제공한다. 이 구조 덕분에 zip 유틸리티는 파일 목록을 보거나 특정 파일을 추출할 때 전체 아카이브를 순차적으로 읽지 않고도 효율적으로 작업할 수 있다.
이러한 계층적 구조는 데이터 압축 아카이브 형식의 표준적인 설계 중 하나이다. zip 파일은 이 구조를 통해 단일 파일 내에 여러 파일과 디렉터리 계층을 저장하며, 무작위 접근과 부분 추출을 가능하게 한다.
3.2. 압축 방법
3.2. 압축 방법
zip 파일 형식은 여러 가지 압축 방법을 지원한다. 가장 기본적인 저장 방법은 압축을 전혀 하지 않고 파일 데이터를 그대로 저장하는 방식이다. 이 방법은 이미 압축된 파일을 다시 압축할 필요가 없거나, 압축 해제 속도를 최우선할 때 사용된다.
가장 널리 사용되는 압축 방법은 DEFLATE 알고리즘이다. 이 방법은 LZ77 알고리즘과 허프만 코딩을 결합하여 데이터 중복을 제거하고 효율적으로 인코딩한다. DEFLATE는 압축률과 속도 사이에서 좋은 균형을 제공하여 일반적인 문서, 이미지, 실행 파일 등 다양한 데이터에 효과적으로 적용된다.
이외에도 과거에 사용되던 압축 알고리즘인 Shrink(줄이기), Reduce(줄이다), Implode(내파) 방법을 지원한다. 또한 bzip2나 LZMA 같은 더 높은 압축률을 제공하는 알고리즘도 선택적으로 사용할 수 있다. 사용자는 파일을 압축할 때 목적에 따라 적절한 압축 방법을 선택할 수 있으며, 대부분의 ZIP 소프트웨어는 기본값으로 DEFLATE 방식을 사용한다.
3.3. ZIP64 확장
3.3. ZIP64 확장
ZIP64 확장은 기존 ZIP 파일 형식의 제한을 극복하기 위해 도입된 확장 규격이다. 기존 ZIP 형식은 파일 크기, 파일 개수, 전체 아카이브 크기 등에 여러 제한이 있었다. 예를 들어, 단일 파일의 최대 크기는 약 4GB(4 기가바이트), 전체 아카이브의 최대 크기는 약 4GB, 한 아카이브 내 최대 파일 개수는 65,535개로 제한되었다.
이러한 한계는 대용량 파일과 데이터 세트가 일반화되면서 실질적인 문제로 부각되었다. ZIP64 확장은 이러한 제한을 대폭 완화하여 단일 파일 크기와 전체 아카이브 크기의 제한을 16EB(16 엑사바이트)까지 확장했으며, 압축 파일 내에 포함될 수 있는 파일의 개수 제한도 사실상 없앴다.
ZIP64 확장은 기존 ZIP 형식과의 하위 호환성을 유지하면서 설계되었다. ZIP64 정보는 중앙 디렉터리 레코드와 로컬 파일 헤더에 확장 필드를 추가하는 방식으로 저장된다. 따라서 ZIP64 아카이브를 오래된 소프트웨어로 열 경우, 확장 정보를 인식하지 못하고 기본 제한 내의 데이터만 접근할 수 있지만, 파일 자체는 손상되지 않는다.
현재 널리 사용되는 대부분의 압축 소프트웨어와 라이브러리(예: Info-ZIP, 7-Zip, Java의 java.util.zip 패키지 등)는 ZIP64 확장을 지원한다. 대용량 데이터를 백업하거나 파일 공유할 때 이 형식은 필수적으로 활용된다.
4. 기능 및 특성
4. 기능 및 특성
4.1. 압축 알고리즘
4.1. 압축 알고리즘
ZIP 파일 형식은 여러 가지 압축 알고리즘을 지원한다. 초기에는 DEFLATE 알고리즘이 가장 널리 사용되었으며, 이는 LZ77과 허프만 부호화를 결합한 무손실 데이터 압축 방법이다. DEFLATE는 좋은 압축률과 빠른 처리 속도 사이의 균형을 잘 맞춰 사실상의 표준이 되었다.
시간이 지나면서 더 높은 압축률이나 속도를 제공하는 새로운 알고리즘들이 추가되었다. 예를 들어, BZIP2 알고리즘은 일반적으로 DEFLATE보다 높은 압축률을 제공하지만 압축 및 해제 속도가 더 느린 편이다. LZMA와 그 후속인 LZMA2 알고리즘은 매우 높은 압축률로 유명하며, 특히 대용량 파일을 압축할 때 효과적이다.
ZIP 파일을 생성할 때 사용자는 특정 파일이나 전체 아카이브에 적용할 압축 방법을 선택할 수 있다. '저장' 옵션은 압축을 전혀 하지 않고 파일을 그대로 패키징하며, 이는 이미 압축된 파일(예: JPEG, MP3)을 처리할 때 유용하다. 각 파일은 압축 방법이 파일 헤더에 저장되어 개별적으로 압축 해제될 수 있다.
이러한 다중 알고리즘 지원은 사용자가 용도에 맞게 압축률과 속도를 유연하게 선택할 수 있게 해 준다. 하지만 모든 ZIP 호환 프로그램이 모든 알고리즘을 지원하는 것은 아니므로, 호환성을 고려할 때는 여전히 DEFLATE 알고리즘이 가장 안전한 선택이다.
4.2. 암호화
4.2. 암호화
ZIP 파일 형식은 암호화 기능을 지원한다. 초기에는 ZIP 2.0에서 도입된 전통적인 암호 기반 암호화 방식을 사용했으나, 이 방식은 현재 보안성이 매우 취약한 것으로 알려져 있다. 이 방식은 예측 가능한 키를 사용하는 스트림 암호를 기반으로 하여, 암호를 모르더라도 무차별 대입 공격이나 알려진 취약점을 통해 비교적 쉽게 해독될 수 있다.
보다 강력한 보안을 위해 PKZIP 5.2 이후로는 AES 암호화 방식을 지원하는 ZIP 포맷 확장이 추가되었다. 이는 128비트 또는 256비트 키 길이의 AES 알고리즘을 사용하여 파일 데이터를 암호화하며, 현대적인 표준에 부합하는 훨씬 강력한 보안을 제공한다. 많은 최신 압축 소프트웨어들은 이 AES 암호화 방식을 기본 또는 옵션으로 지원하고 있다.
사용자는 파일을 압축할 때 암호를 설정할 수 있으며, 암호화된 ZIP 파일을 열거나 압축을 풀 때는 설정한 암호를 입력해야 한다. 그러나 암호화 방식에 따라 보안 수준이 크게 달라지므로, 중요한 데이터를 보호하기 위해서는 반드시 AES 암호화 방식을 사용하는 것이 권장된다. 일부 소프트웨어는 파일 목록 자체를 암호화하지 않아, 암호 없이도 내부에 어떤 파일이 있는지 확인할 수 있는 경우도 있다.
4.3. 분할 압축
4.3. 분할 압축
분할 압축은 대용량 파일을 여러 개의 작은 파일로 나누어 저장하는 기능이다. 이 기능은 저장 매체의 용량 제한이나 파일 전송 시의 크기 제한을 극복하기 위해 사용된다. 예를 들어 이메일 첨부나 특정 온라인 서비스에서는 첨부 파일 크기에 제한이 있는 경우가 많다. 분할 압축을 사용하면 원본 파일을 여러 개의 조각으로 나눈 후, 수신 측에서 이 조각들을 다시 하나로 합쳐 원본을 복원할 수 있다.
분할 압축을 생성할 때는 보통 각 조각의 최대 크기를 지정한다. 이 크기는 1.44MB 플로피 디스크에 맞춘 형태부터 CD, DVD 용량, 또는 사용자가 직접 지정한 임의의 크기까지 다양하다. 생성된 파일들은 .zip, .z01, .z02 등의 확장자를 가지며, 첫 번째 파일이 .zip 확장자를 가진다. 압축을 해제할 때는 이 첫 번째 .zip 파일을 실행하면 나머지 조각 파일들을 자동으로 인식하여 하나의 파일로 복원한다.
분할된 압축 파일을 해제하려면 모든 분할 조각이 같은 디렉토리에 존재해야 한다. 하나라도 누락되면 압축 해제가 불가능하다. 대부분의 현대 압축 소프트웨어는 분할 압축 생성 및 해제 기능을 지원하며, 이 과정은 사용자에게 투명하게 이루어진다. 분할 압축은 자체 추출 파일 형식으로도 생성될 수 있어, 압축 해제 프로그램이 없는 환경에서도 실행 가능한 파일 형태로 배포될 수 있다.
4.4. 자체 추출 파일
4.4. 자체 추출 파일
자체 추출 파일은 실행 가능한 압축 파일이다. 일반적인 ZIP 파일은 압축 해제 프로그램이 별도로 필요하지만, 자체 추출 파일은 그 자체가 실행 파일 형태로 되어 있어 사용자가 특정 프로그램을 설치하지 않아도 파일을 풀 수 있다. 이 파일의 확장자는 주로 .exe를 사용한다.
자체 추출 파일의 내부 구조는 실행 코드와 ZIP 아카이브 데이터로 구성된다. 사용자가 파일을 실행하면 내장된 실행 코드가 먼저 동작하여, 같은 파일 내에 포함된 압축된 데이터를 자동으로 해제하는 과정을 수행한다. 이 과정에서 사용자에게 압축 해제 경로를 선택하도록 안내하는 간단한 인터페이스를 제공하기도 한다.
이 형식은 소프트웨어 배포나 대량의 파일을 상대방에게 쉽게 전달할 때 유용하게 쓰인다. 수신자가 압축 소프트웨어에 익숙하지 않거나, 특정 프로그램을 보유하지 않았을 경우에도 파일 내용을 추출할 수 있게 해준다. 그러나 실행 파일이라는 특성상 악성 코드에 감염될 위험이 있다는 점은 주의해야 한다.
일부 압축 소프트웨어는 자체 추출 파일 생성 기능을 제공하며, 생성 시 압축 해제 과정을 자동으로 진행할지 또는 사용자 확인을 받을지 등의 옵션을 설정할 수 있다.
5. 사용 방법
5. 사용 방법
5.1. 명령줄 도구
5.1. 명령줄 도구
zip 파일을 생성하고 관리하는 가장 기본적인 방법은 명령줄 도구를 사용하는 것이다. 다양한 운영체제에 기본 내장된 도구들이 있으며, 이들은 스크립트나 배치 작업에 통합하기에 매우 적합하다.
유닉스 계열 운영체제(리눅스, macOS 등)에서는 주로 zip과 unzip 명령어를 사용한다. zip 명령어는 파일과 디렉터리를 압축하는 데 사용되며, unzip은 압축을 해제한다. 예를 들어, zip -r archive.zip folder/ 명령은 폴더를 재귀적으로 압축하고, unzip archive.zip은 현재 디렉터리에 압축을 해제한다. 추가적인 옵션으로 압축률 조정, 암호 설정, 특정 파일 제외 등을 할 수 있다.
마이크로소프트 윈도우에서는 명령 프롬프트(cmd)나 파워셸에서 tar 명령어를 사용하거나, 별도의 유틸리티를 설치하여 zip 기능을 활용할 수 있다. 특히 윈도우 10 이후부터는 tar 명령어에 -a 옵션을 사용하여 zip 형식의 압축을 지원한다. 예를 들어, tar -a -c -f archive.zip files... 명령으로 zip 파일을 생성할 수 있다.
이러한 명령줄 도구들은 자동화된 백업 시스템, 소프트웨어 빌드 과정, 대량의 파일 배치 처리 등에서 강력한 효율성을 발휘한다. 그래픽 사용자 인터페이스가 제공하는 편리함보다는 정밀한 제어와 반복 작업의 자동화에 초점이 맞춰져 있다.
5.2. 그래픽 사용자 인터페이스 도구
5.2. 그래픽 사용자 인터페이스 도구
zip 파일을 다루기 위한 그래픽 사용자 인터페이스(GUI) 도구는 명령줄에 익숙하지 않은 일반 사용자에게 직관적인 압축 및 해제 기능을 제공한다. 대부분의 운영 체제에는 기본적으로 내장된 도구가 포함되어 있으며, 다양한 기능을 가진 서드파티 응용 프로그램도 널리 사용된다.
마이크로소프트 윈도우에서는 파일 탐색기를 통해 기본적인 zip 기능을 사용할 수 있다. 사용자는 파일이나 폴더를 선택한 후 마우스 오른쪽 버튼을 클릭하여 '압축' 메뉴를 통해 새로운 zip 파일을 만들거나, 기존 zip 파일을 '모두 압축 풀기'로 해제할 수 있다. 애플 macOS의 경우 파인더가 유사한 기본 기능을 제공한다. 이러한 운영 체제 기본 도구는 간단한 작업에 적합하지만, 다양한 압축 형식 지원이나 고급 설정 변경에는 제한이 있다.
보다 강력한 기능이 필요할 경우, 윈집(WinZip), 7-집(7-Zip), 윈RAR(WinRAR)과 같은 전용 압축 소프트웨어를 설치하여 사용한다. 이러한 프로그램들은 사용자에게 압축률 설정, 암호화 옵션, 분할 압축, 자체 추출 파일 생성 등 다양한 고급 기능을 그래픽 메뉴를 통해 제공한다. 또한 ZIP 외에도 RAR, 7z, TAR 등 다양한 다른 압축 형식을 지원하는 경우가 많다.
리눅스 배포판의 경우, 파일 롤러(File Roller, GNOME)나 아크(Ark, KDE)와 같은 데스크톱 환경별 GUI 도구가 일반적으로 포함되어 있다. 이들 도구도 zip 파일을 포함한 여러 형식의 압축 파일을 생성하고 관리할 수 있는 통합 인터페이스를 제공한다.
6. 관련 소프트웨어
6. 관련 소프트웨어
zip 형식을 지원하는 소프트웨어는 매우 다양하다. 대표적인 명령줄 도구로는 PKZIP의 후속 버전과 호환되는 Info-ZIP의 zip 및 unzip이 있으며, 윈도우에는 자체 내장 명령어가 있다. 리눅스와 유닉스 계열 시스템에서는 GNU tar와 결합하여 압축하는 경우도 많지만, zip 도구 역시 널리 사용된다.
그래픽 사용자 인터페이스를 제공하는 대중적인 소프트웨어로는 윈집과 반디집이 있다. 이들은 파일 탐색기와 통합되어 마우스 오른쪽 버튼 클릭 메뉴를 통해 손쉽게 압축 및 해제를 수행할 수 있게 해준다. 또한 7-Zip은 높은 압축률과 다양한 형식 지원으로 널리 알려져 있다.
많은 파일 관리자 프로그램도 기본적으로 zip 파일 처리를 지원한다. macOS의 아카이브 유틸리티는 더블클릭만으로 zip 파일을 풀 수 있도록 운영 체제에 통합되어 있다. 한편, 자바나 파이썬과 같은 프로그래밍 언어에는 zip 아카이브를 조작할 수 있는 표준 라이브러리가 포함되어 있어 응용 프로그램 개발에 활용된다.
7. 장단점
7. 장단점
ZIP 형식의 가장 큰 장점은 범용성이다. 거의 모든 운영 체제에 기본 지원되며, 다양한 압축 및 아카이브 도구에서 호환된다. 이로 인해 파일을 묶어 전송하거나 보관할 때 사실상의 표준으로 자리 잡았다. 또한 여러 파일을 하나로 묶는 아카이빙 기능과 데이터를 줄이는 압축 기능을 동시에 제공하며, 필요에 따라 압축률과 속도를 선택할 수 있는 유연성을 갖추고 있다.
단점으로는 압축 효율성이 일부 최신 형식에 비해 낮은 점이 꼽힌다. 특히 멀티미디어 파일처럼 이미 압축된 데이터의 경우 추가로 크기를 줄이는 효과가 미미하다. 또한 기본적인 암호화 방식인 ZIP 2.0 암호화는 보안에 취약하여 비밀번호를 쉽게 무력화할 수 있어 중요한 데이터 보호에는 적합하지 않다.
파일 구조상의 한계도 존재한다. 원래 설계는 파일 크기와 항목 수에 제한이 있어, 매우 큰 파일이나 많은 수의 파일을 처리하려면 ZIP64 확장을 사용해야 한다. 모든 소프트웨어가 이 확장을 완벽히 지원하는 것은 아니므로 호환성 문제가 발생할 수 있다.
전반적으로 ZIP은 편의성과 호환성 측면에서 뛰어나지만, 극도의 압축률이나 강력한 보안이 필요한 상황에서는 RAR이나 7z 같은 다른 형식을 고려하는 것이 일반적이다.
8. 대체 형식
8. 대체 형식
zip 형식은 널리 사용되지만, 특정 상황이나 요구 사항에 따라 다른 압축 파일 형식이 더 적합할 수 있다. 다양한 대체 형식이 존재하며, 각각 고유한 장점과 용도를 가지고 있다.
7z는 높은 압축률을 자랑하는 형식으로, 특히 LZMA와 LZMA2 압축 알고리즘을 사용하여 zip보다 더 작은 파일 크기를 만들어낼 수 있다. 이 형식은 7-Zip 프로그램의 기본 형식이며, 오픈 소스로 개발되었다. RAR은 높은 압축률과 강력한 오류 복구 기능, 분할 압축 지원으로 유명하다. 주로 윈라 프로그램과 연관되어 있으며, 상용 소프트웨어를 통해 완전한 기능을 제공한다.
보다 단순한 목적을 위한 형식도 있다. Gzip은 주로 단일 파일을 압축하는 데 사용되며, 유닉스 및 리눅스 환경에서 널리 쓰인다. TAR 형식은 여러 파일을 하나로 묶는 데 특화되어 있어, 보통 gzip이나 bzip2와 같은 다른 압축 도구와 함께 조합되어 사용된다. 이 조합은 .tar.gz 또는 .tgz와 같은 확장자로 나타난다.
9. 여담
9. 여담
zip이라는 이름은 필립 카츠가 이 형식을 개발할 당시 속도감을 강조하기 위해 지은 것으로 알려져 있다. 그는 더 빠른 압축 솔루션을 원했고, 'zip'이라는 단어가 '빠르게 움직이다'라는 의미를 담고 있어 적합하다고 생각했다.
이 파일 형식은 PKZIP이라는 프로그램을 통해 처음 세상에 소개되었으며, 이후 윈도우와 macOS를 포함한 대부분의 운영 체제에 기본적으로 지원되면서 사실상의 표준 아카이브 형식으로 자리 잡았다. 덕분에 사용자는 별도의 소프트웨어 설치 없이도 압축 파일을 쉽게 생성하거나 풀 수 있게 되었다.
일상에서 '파일을 압축한다'는 행위는 종종 'zip으로 압축한다'는 말과 동의어로 사용될 정도로 보편화되었다. 이는 기술 용어가 일반 언어에 깊이 스며든 대표적인 사례 중 하나이다.
