캐비닛 (파일 포맷)
1. 개요
CAB(Cabinet) 파일 형식은 Microsoft에서 개발한 보관 파일 형식이다. 최대 65,535개의 폴더를 포함할 수 있으며, 각 폴더는 최대 65,535개의 파일을 포함하여 총 4,294,836,225개의 파일을 저장할 수 있다. 내부적으로 각 폴더는 단일 압축 블록으로 처리되어 효율적인 압축을 제공하며, DEFLATE, 퀀텀 압축, LZX, NULL 등 다양한 압축 알고리즘을 지원한다. CAB 파일은 다양한 Microsoft 설치 기술, CBS 로그 보관, 그리고 리눅스 시스템에서의 펌웨어 업데이트 배포 등 다양한 용도로 사용된다. Windows는 makecab 유틸리티를 통해 CAB 파일을 생성하고, 파일 탐색기, 설정 API, 명령줄 도구를 통해 내용을 추출할 수 있다.
| 유형 | 아카이브 파일 포맷 |
|---|---|
| 확장자 | .cab |
| MIME 형식 | application/vnd.ms-cab-compressed |
| Uiniform Type Identifier (UTI) | public.archive.cab public.data public.archive |
| 소유자 | 마이크로소프트 |
| 매직 넘버 | MSCF |
| 개발자 | 마이크로소프트 |
|---|---|
| 사용 | 설치 소프트웨어 장치 드라이버 기타 마이크로소프트 윈도우 구성 요소 설치 |
| 컨테이너 | 여러 파일 및 폴더 |
| 압축 알고리즘 | LZX DEFLATE 양자화 코덱 |
| 특징 | 디지털 인증서 지원 무결성 검사 |
| 비고 | 마이크로소프트 윈도우에서 주로 사용 다양한 압축 알고리즘 지원 |
|---|
-
아카이브 포맷 -
ARJ
ARJ는 다양한 소프트웨어 유틸리티에서 압축 해제가 가능한 파일 포맷으로, macOS에서는 독립 실행형 유틸리티를 통해 압축을 해제할 수 있다. -
아카이브 포맷 -
JAR (파일 포맷)
JAR (Java ARchive)는 자바 런타임 환경에서 애플리케이션 배포를 위해 사용되는 ZIP 기반의 파일 포맷으로, 자바 클래스 파일과 매니페스트 파일을 포함하여 메타데이터와 실행 정보를 관리하며, 압축 및 전자 서명을 지원하고 실행 가능한 JAR 파일을 통해 애플리케이션을 간편하게 실행할 수 있게 한다. -
윈도우 관리 -
블루스크린
블루스크린은 윈도우 운영체제에서 발생하는 치명적인 오류로, 컴퓨터 작동을 멈추고 파란색 화면에 오류 메시지를 표시하며, 하드웨어 또는 소프트웨어 문제로 인해 발생하고, 시스템 복원, 안전 모드 부팅 등의 방법으로 대처한다. -
윈도우 관리 -
파워셸
파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
2. 디자인
CAB 아카이브는 효율적인 데이터 압축 및 저장을 위해 설계되었다. 내부적으로 폴더와 파일의 관계, 경로 처리 방법, 사용 가능한 압축 알고리즘, 추가 기능 등을 포함한다. 이러한 디자인 요소들은 CAB 파일 형식을 다양한 용도로 활용할 수 있게 해준다.
하위 섹션인 "구조", "압축 알고리즘", "추가 기능"에서 이미 자세하게 다루고 있으므로, 해당 섹션들에서는 더 자세한 내용을 확인할 수 있다.
2.1. 구조
CAB 아카이브는 최대 65,535개의 "폴더"(표준 운영 체제 디렉토리와 구별됨)를 포함할 수 있으며, 각 폴더는 최대 65,535개의 파일을 포함할 수 있어 총 4,294,836,225개의 파일을 저장할 수 있다. 내부적으로 각 폴더는 단일 압축 블록으로 처리되어 각 파일을 개별적으로 압축하는 것보다 더 효율적인 압축을 제공한다.
폴더의 모든 항목은 파일이어야 한다. 이 구조로 인해 CAB 아카이브에 빈 폴더를 저장하는 것은 불가능하다.
다음은 폴더와 파일 간의 관계를 보여주는 CAB 파일 구조의 예이다.
* CAB 파일
첫 번째 폴더
* Records/Student_01.tsv
* Records/Photos/Student_01.jpg
두 번째 폴더
* Records/Student_02.tsv
* Records/Photos/Student_02.jpg
경로를 처리하는 방법은 CAB 파일 형식에 지정되어 있지 않으므로 소프트웨어 구현에 따라 다르다.
* 일부는 파일 이름을 파일 경로에만 추가하여 CAB 아카이브의 모든 파일이 단일 폴더에 있는 것처럼 처리한다. IExpress는 이러한 방식으로 작동하며, CAB 아카이브를 폴더로 열 수 있는 Microsoft Windows 탐색기도 마찬가지이다.
* 일부는 경로를 저장하고 추출 시 필요에 따라 폴더를 생성할 수 있다. CABARC.EXE 및 EXTRACT.EXE(Microsoft Cabinet SDK의 도구)뿐만 아니라 lcab 및 cabextract(타사 오픈 소스 도구)도 이러한 방식으로 작동한다.
* EXPAND.EXE는 버전 6부터(Windows Vista 이상에 포함됨) 파일 경로로 파일을 추출할 수 있다. 이전 버전은 그렇게 하지 않는다.
CAB 파일 형식은 다음 압축 알고리즘을 사용할 수 있다.
* DEFLATE: ZIP 파일 형식의 저자 필 커츠가 발명했다(특히 MSZIP 캡슐화).
* 퀀텀 압축: 퀀텀 아카이버의 저자인 데이비드 스태포드로부터 라이선스를 받았다.(makecab.exe/diamond.exe의 모든 버전에서 사용할 수 없음)
* LZX: 조나단 포브스와 토미 포우타넨이 발명했으며, 포브스가 회사에 입사하면서 마이크로소프트에 제공되었다.
* NULL: 저장됨
CAB 아카이브는 디지털 서명 또는 임의의 데이터와 같은 일부 응용 프로그램별 용도로 아카이브 내와 아카이브의 각 파일에 빈 공간을 예약할 수 있다.
2.2. 압축 알고리즘
CAB 파일 형식은 다음 압축 알고리즘을 사용할 수 있다.
* DEFLATE: ZIP 파일 형식의 저자 필 커츠가 발명했다(특히 MSZIP 캡슐화).
* 퀀텀 압축: 퀀텀 아카이버의 저자인 데이비드 스태포드로부터 라이선스를 받았다.
* LZX: 조나단 포브스와 토미 포우타넨이 발명했으며, 포브스가 회사에 입사하면서 마이크로소프트에 제공되었다.
* NULL: 저장됨
2.3. 추가 기능
CAB 아카이브는 최대 65,535개의 "폴더"(표준 운영 체제 디렉토리와 구별됨)를 포함할 수 있으며, 각 폴더는 최대 65,535개의 파일을 포함할 수 있어 총 4,294,836,225개의 파일을 저장할 수 있다. 내부적으로 각 폴더는 단일 압축 블록으로 처리되어 각 파일을 개별적으로 압축하는 것보다 더 효율적인 압축을 제공한다.
폴더의 모든 항목은 파일이어야 한다. 이 구조로 인해 CAB 아카이브에 빈 폴더를 저장하는 것은 불가능하다.
다음은 폴더와 파일 간의 관계를 보여주는 CAB 파일 구조의 예이다.
* CAB 파일
첫 번째 폴더
* Records/Student_01.tsv
* Records/Photos/Student_01.jpg
두 번째 폴더
* Records/Student_02.tsv
* Records/Photos/Student_02.jpg
경로를 처리하는 방법은 CAB 파일 형식에 지정되어 있지 않으므로 소프트웨어 구현에 따라 다르다.
* 일부는 파일 이름을 파일 경로에만 추가하여 CAB 아카이브의 모든 파일이 단일 폴더에 있는 것처럼 처리한다. IExpress는 이러한 방식으로 작동하며, CAB 아카이브를 폴더로 열 수 있는 Microsoft Windows 탐색기도 마찬가지이다.
* 일부는 경로를 저장하고 추출 시 필요에 따라 폴더를 생성할 수 있다. CABARC.EXE 및 EXTRACT.EXE(Microsoft Cabinet SDK의 도구)뿐만 아니라 lcab 및 cabextract(타사 오픈 소스 도구)도 이러한 방식으로 작동한다.
* EXPAND.EXE는 버전 6부터(Windows Vista 이상에 포함됨) 파일 경로로 파일을 추출할 수 있다. 이전 버전은 그렇게 하지 않는다.
CAB 파일 형식은 다음 압축 알고리즘을 사용할 수 있다.
* DEFLATE: ZIP 파일 형식의 저자 필 커츠가 발명했다(특히 MSZIP 캡슐화).
* 퀀텀 압축: 퀀텀 아카이버의 저자인 데이비드 스태포드로부터 라이선스를 받았다. (makecab.exe/diamond.exe의 모든 버전에서 사용할 수 없음)
* LZX: 조나단 포브스와 토미 포우타넨이 발명했으며, 포브스가 회사에 입사하면서 마이크로소프트에 제공되었다.
* NULL: 저장됨
CAB 아카이브는 디지털 서명 또는 임의의 데이터와 같은 일부 응용 프로그램별 용도로 아카이브 내와 아카이브의 각 파일에 빈 공간을 예약할 수 있다.
3. 구현
마이크로소프트 윈도우를 비롯한 여러 소프트웨어에서 캐비닛(CAB) 파일 포맷을 구현하여 사용한다. 윈도우는 명령줄 인터페이스 유틸리티 `makecab`를 사용하여 CAB 파일을 만들고, 파일 탐색기, 설정 API, 명령줄 명령어 `expand.exe`, `extract.exe` 및 `extrac32.exe`를 통해 내용을 추출한다. WinZip, WinRAR, 7-Zip과 같은 소프트웨어도 CAB 파일을 지원한다. 리눅스에서는 `cabextract` (추출 전용) 또는 `gcab` (추출 및 생성) 도구를 사용한다. 더 자세한 내용은 파일 압축 프로그램 비교 문서를 참고할 수 있다.
3.1. 윈도우 지원
마이크로소프트 윈도우는 `makecab` 명령줄 인터페이스 유틸리티를 사용하여 CAB 보관 파일을 만들 수 있도록 지원한다. 파일 탐색기, 설정 API, 그리고 명령줄 명령어 `expand.exe`, `extract.exe` 및 `extrac32.exe`를 사용하여 CAB 보관 파일의 내용을 추출하는 것을 지원한다.
WinZip, WinRAR 또는 7-Zip 등도 CAB 보관 파일을 지원하는 잘 알려진 소프트웨어이다.
3.2. 기타 소프트웨어
마이크로소프트 윈도우는 `makecab` 명령줄 인터페이스 유틸리티를 사용하여 CAB 보관 파일을 만들 수 있도록 지원한다. 파일 탐색기, 설정 API, 그리고 명령줄 명령어 `expand.exe`, `extract.exe` 및 `extrac32.exe`를 사용하여 CAB 보관 파일의 내용을 추출하는 것을 지원한다.
CAB 보관 파일 지원을 제공하는 다른 잘 알려진 소프트웨어로는 WinZip, WinRAR 또는 7-Zip 등이 있다. 앞서 언급한 `cabextract`는 리눅스 시스템에서 흔히 사용되는 도구이지만, 보관 파일의 추출만 가능하다. 그러나 `gcab` 도구는 CAB 보관 파일을 추출하고 생성할 수 있다.
4. 용도
마이크로소프트의 다양한 설치 기술에서 CAB 형식이 사용된다. CAB 파일은 IExpress와 같이 자체 압축 해제 프로그램과 연결되어 사용되기도 한다. MSI 및 MSU 파일처럼 다른 파일에 포함되는 경우도 있다.
리눅스 시스템에서는 fwupd를 통해 펌웨어 업데이트를 배포하는데 CAB 아카이브가 사용된다. 하드웨어 공급업체가 제공하는 이 업데이트는 비휘발성 메모리에 플래시될 수 있다.
4.1. 윈도우 설치 기술
다양한 마이크로소프트 설치 기술은 CAB 형식을 사용한다. 여기에는 윈도우 인스톨러, 윈도우 설정 (윈도우 95부터 윈도우 서버 2003까지), 설정 API, 장치 설치 관리자, 테마 팩 및 AdvPack (인터넷 익스플로러에서 ActiveX 구성 요소를 설치하는 데 사용)이 포함된다. CAB 파일은 실행 프로그램이 관련된 CAB 파일을 추출하는 IExpress와 같은 자체 압축 해제 프로그램과도 자주 관련이 있다. CAB 파일은 다른 파일에 포함되는 경우도 있는데, 예를 들어 MSI 및 MSU 파일은 일반적으로 하나 이상의 내장 CAB 파일을 포함한다.
윈도는 캐비닛 형식을 사용하여 구성 요소 기반 서비스 (CBS) 로그를 보관하며, 이는 C:\Windows\Logs\CBS 폴더에 보관된다. 압축 프로세스에 버그가 발생하면 해당 폴더와 C:\Windows\Temp 폴더 모두에서 쓸모없는 로그 파일이 무분별하게 생성되어 하드 드라이브가 완전히 채워질 때까지 디스크 저장 공간을 소비할 수 있다. 특정 절차를 따르지 않고 파일을 삭제하면 삭제된 파일이 더 빠른 속도로 다시 생성될 수 있다.
4.2. 기타 용도
다양한 마이크로소프트 설치 기술은 CAB 형식을 사용한다. 여기에는 윈도우 인스톨러, 윈도우 설정 (윈도우 95부터 윈도우 서버 2003까지), 설정 API, 장치 설치 관리자, 테마 팩 및 AdvPack (인터넷 익스플로러에서 ActiveX 구성 요소를 설치하는 데 사용)이 포함된다. CAB 파일은 실행 프로그램이 관련된 CAB 파일을 추출하는 IExpress와 같은 자체 압축 해제 프로그램과도 자주 관련이 있다. CAB 파일은 다른 파일에 포함되는 경우도 있다. 예를 들어, MSI 및 MSU 파일은 일반적으로 하나 이상의 내장 CAB 파일을 포함한다.
윈도우는 캐비닛 형식을 사용하여 구성 요소 기반 서비스 (CBS) 로그를 보관하며, 이는 `C:\Windows\Logs\CBS` 폴더에 보관된다. 압축 프로세스에서 버그가 발생하면 해당 폴더와 `C:\Windows\Temp` 폴더 모두에서 쓸모없는 로그 파일이 무분별하게 생성되어 하드 드라이브가 완전히 채워질 때까지 디스크 저장 공간을 소비할 수 있다. 특정 절차를 따르지 않고 파일을 삭제하면 삭제된 파일이 더 빠른 속도로 다시 생성될 수 있다.
리눅스 시스템에서 CAB 아카이브는 fwupd에서 펌웨어 업데이트를 배포하는 데 사용되며, 하드웨어 공급업체에서 제공하는 이 업데이트는 비휘발성 메모리에 플래시될 수 있다.
5. 관련 형식
InstallShield 같은 다른 설치 프로그램에서도 자체적인 독점 보관 형식으로 `.cab` 파일 확장자를 사용한다. InstallShield는 압축을 위해 zlib(Deflate 참조)를 사용하지만, 헤더가 Microsoft CAB 파일과 다르므로 호환되지 않아 표준 캐비닛 형식으로 제작된 프로그램으로 조작하거나 편집할 수 없다. Unshield와 같은 특수 타사 유틸리티는 이 특정 독점 형식을 추출할 수 있다. 이 형식은 ISC라는 다른 매직 넘버를 가지고 있다.
윈도우 CE 소프트웨어는 확장자가 ".000"으로 끝나는 내부 첫 번째 파일이 설치 방법을 자세히 설명하는 CAB 파일로 배포된다.
마이크로소프트 인스톨러 `.msi` 파일은 때때로 CAB 파일을 포함하지만, 먼저 디코딩해야 하는 복합 파일 바이너리 형식 자체를 사용한다. `lessmsi`와 같은 소프트웨어를 사용하여 이러한 파일을 압축 해제할 수 있다.
마이크로소프트 퍼블리셔에는 퍼블리셔 문서를 모든 외부 링크와 함께 `.PUZ` 확장자를 가진 CAB 파일로 묶는 "Pack and Go" 기능이 있다. 이 파일은 `.PUZ` 파일과 함께 배포되는 동반 .EXE 파일로 활성화되도록 설계되었으며, 모든 CAB 파일 추출 프로그램으로 열 수 있다.