ISO 아카이브 포맷은 ISO 9660으로도 알려져 있으며, 1988년 국제 표준화 기구(ISO)에서 발표한 파일 시스템 표준입니다. CD-ROM과 같은 광학 디스크 미디어를 위한 크로스 플랫폼 파일 시스템으로 설계되었습니다. 목표는 서로 다른 운영 체제가 광학 디스크에서 데이터를 읽을 수 있는 통합된 방법을 제공하여 상호 운용성과 호환성을 보장하는 것이었습니다.
ISO 9660은 대부분의 운영 체제에서 사용하는 파일 시스템과 유사한 계층적 파일 시스템 구조를 정의합니다. 데이터를 디렉토리와 파일에 구성하며, 각 디렉토리는 하위 디렉토리와 파일을 포함할 수 있습니다. 이 표준은 볼륨과 디렉토리 설명자의 포맷과 디렉토리에 빠르게 액세스하는 데 사용되는 경로 테이블을 지정합니다.
ISO 9660 포맷의 주요 특징 중 하나는 단순성과 호환성입니다. 이 표준은 디스크를 광범위한 시스템에서 읽을 수 있도록 파일 이름, 디렉토리 구조, 메타데이터에 제한을 가합니다. 파일 이름은 8자로 제한되고 그 뒤에 3자 확장자(8.3 포맷)가 붙으며, 대문자, 숫자, 밑줄만 포함할 수 있습니다. 디렉토리 이름도 비슷하게 제한되며 최대 깊이는 8레벨입니다.
더 긴 파일 이름과 추가 메타데이터를 수용하기 위해 ISO 9660 표준은 다양한 사양을 통해 확장되었습니다. 그러한 확장 중 하나는 1995년 Microsoft에서 도입한 Joliet입니다. Joliet은 더 긴 파일 이름(최대 64개 유니코드 문자)을 허용하고 대소문자를 구분합니다. Joliet 확장을 지원하는 시스템에서 읽을 수 있는 UCS-2 인코딩을 사용하여 추가 디렉토리 레코드 세트를 포함하여 이를 달성합니다.
ISO 9660의 또 다른 주목할 만한 확장은 UNIX 시스템을 위해 개발된 Rock Ridge입니다. Rock Ridge는 파일 권한, 소유권, 심볼릭 링크와 같은 POSIX 파일 시스템 의미 체계를 ISO 9660 포맷에 추가합니다. 이 확장을 통해 UNIX 파일 시스템에서 ISO 이미지를 만들 때 UNIX 고유 파일 속성을 보존할 수 있습니다.
ISO 9660 포맷은 디스크를 논리적 블록으로 나눕니다. 각 블록은 일반적으로 2,048바이트 크기입니다. 처음 16개 블록은 시스템 사용을 위해 예약되어 있으며 디스크의 구조와 내용에 대한 정보를 제공하는 볼륨 설명자를 포함합니다. 기본 볼륨 설명자는 필수이며 디스크의 볼륨 식별자, 논리적 블록의 크기, 루트 디렉토리 레코드와 같은 세부 정보를 포함합니다.
볼륨 설명자 다음에 경로 테이블이 디스크에 저장됩니다. 경로 테이블에는 디스크의 각 디렉토리 위치에 대한 정보가 포함되어 디렉토리 계층을 빠르게 탐색할 수 있습니다. 다양한 시스템에서 사용하는 서로 다른 바이트 순서를 지원하기 위해 L-Path 테이블(리틀 엔디안)과 M-Path 테이블(빅 엔디안)로 구성됩니다.
디렉토리와 파일은 디스크의 후속 블록에 저장됩니다. 각 디렉토리는 디렉토리 이름, 부모 디렉토리, 연결된 파일과 하위 디렉토리의 위치와 같은 정보를 포함하는 디렉토리 레코드로 표현됩니다. 파일은 논리적 블록의 연속적인 시퀀스로 저장되며, 위치와 크기는 디렉토리 내의 해당 파일 식별자 레코드에 지정됩니다.
ISO 이미지를 만들 때 파일 시스템은 먼저 ISO 9660 표준 요구 사항에 따라 구성됩니다. 여기에는 파일과 디렉토리 이름이 8.3 포맷을 준수하고, 디렉토리 깊이를 제한하고, 파일 이름을 대문자로 변환하는 것이 포함됩니다. 파일 시스템이 준비되면 `.iso` 확장자를 가진 이미지 파일에 기록되며, 이후 광학 디스크에 구워지거나 가상 디스크 이미지로 사용할 수 있습니다.
ISO 9660 포맷된 디스크를 읽으려면 운영 체제나 전용 소프트웨어 애플리케이션이 먼저 볼륨 설명자를 검사하여 디스크의 구조와 특성을 확인합니다. 그런 다음 경로 테이블과 디렉토리 레코드를 사용하여 파일 시스템 계층을 탐색하고 특정 파일이나 디렉토리를 찾습니다. 파일에 액세스하면 시스템은 파일 식별자 레코드에 제공된 정보를 기반으로 디스크에서 적절한 논리적 블록을 읽습니다.
ISO 9660 포맷은 널리 채택되었으며 여전히 광학 디스크에 소프트웨어, 멀티미디어 콘텐츠, 아카이브 데이터를 배포하는 데 일반적으로 사용됩니다. 단순성, 호환성, 견고성은 새로운 광학 디스크 포맷과 파일 시스템이 등장했음에도 불구하고 오랫동안 사용되도록 기여했습니다.
오래된 표준임에도 불구하고 ISO 9660 표준은 현대 컴퓨팅에서 여전히 관련성이 있습니다. Windows, macOS, Linux를 포함한 많은 소프트웨어 애플리케이션과 운영 체제는 이 포맷을 기본적으로 지원합니다. 또한 ISO 이미지는 운영 체제 설치 파일, 소프트웨어 패키지, 가상 머신 디스크 이미지를 배포하는 데 자주 사용됩니다. 데이터를 저장하고 전송하는 데 편리하고 플랫폼에 독립적인 방법을 제공하기 때문입니다.
결론적으로 ISO 9660 포맷은 광학 디스크의 파일 시스템 구조를 표준화하는 데 중요한 역할을 했으며, 크로스 플랫폼 호환성을 가능하게 하고 디지털 콘텐츠 배포를 용이하게 했습니다. Joliet과 Rock Ridge와 같은 확장은 더 긴 파일 이름, 추가 메타데이터, UNIX 고유 속성에 대한 지원을 추가했습니다. 광학 디스크는 다른 저장 매체와 네트워크 기반 배포 방법으로 대체되었지만 ISO 9660 포맷은 데이터를 아카이브하고 교환하는 데 여전히 신뢰할 수 있고 널리 지원되는 표준입니다.
기술이 계속 발전함에 따라 ISO 9660 포맷은 결국 대용량 광학 디스크나 다 른 저장 매체를 위해 설계된 더 새롭고 더 진보된 파일 시스템으로 대체될 수 있습니다. 그러나 컴퓨팅 역사에 미치는 영향과 크로스 플랫폼 데이터 교환에 대한 표준화된 접근 방식을 확립하는 데 있어서의 역할은 잊혀지지 않을 것입니다. ISO 9660 포맷은 상호 운용성의 중요성과 표준을 개발하고 채택하는 데 있어서 업계 전체 협력의 이점을 증명합니다.
파일 압축은 동일한 정보가 더 적은 비트를 차지하도록 중복성을 줄입니다. 얼마나 멀리 갈 수 있는지에 대한 상한선은 정보 이론에 의해 결정됩니다. 무손실 압축의 경우, 한계는 소스의 엔트로피입니다(섀넌의 소스 코딩 정리 와 그의 1948년 원본 논문 “통신의 수학적 이론”참조). 손실 압축의 경우, 속도와 품질 간의 절충은 속도-왜곡 이론에 의해 포착됩니다.
대부분의 압축기에는 두 단계가 있습니다. 첫째, 모델이 데이터의 구조를 예측하거나 노출합니다. 둘째, 코더가 이러한 예측을 거의 최적의 비트 패턴으로 변환합니다. 고전적인 모델링 계열은 렘펠-지브입니다. LZ77 (1977) 과 LZ78 (1978)은 반복되는 하위 문자열을 감지하고 원시 바이트 대신 참조를 내보냅니다. 코딩 측면에서는 허프만 코딩 (원본 논문 1952참조)이 더 가능성 있는 기호에 더 짧은 코드를 할당합니다. 산술 코딩 과 범위 코딩 은 엔트로피 한계에 더 가깝게 압축하는 더 세분화된 대안이며, 현대적인 비대칭 숫자 체계(ANS) 는 빠른 테이블 기반 구현으로 유사한 압축을 달성합니다.
DEFLATE(gzip, zlib, ZIP에서 사용)는 LZ77과 허프만 코딩을 결합합니다. 사양은 공개되어 있습니다. DEFLATE RFC 1951, zlib 래퍼 RFC 1950, gzip 파일 형식 RFC 1952. Gzip은 스트리밍을 위해 구성되었으며 명시적으로 임의 접근을 시도하지 않습니다. PNG 이미지는 PNG 사양에 따라 DEFLATE를 유일한 압축 방법으로 표준화합니다(최대 32KiB 창). “압축 방법 0… deflate/inflate… 최대 32768바이트” 및 W3C/ISO PNG 제2판.
Zstandard (zstd): 매우 빠른 압축 해제와 높은 비율을 위해 설계된 최신 범용 압축기입니다. 형식은 RFC 8878 (또한 HTML 미러) 및 참조 사양 GitHub에 문서화되어 있습니다. gzip과 마찬가지로 기본 프레임은 임의 접근을 목표로 하지 않습니다. zstd의 초능력 중 하나는 사전입니다. 코퍼스에서 가져온 작은 샘플로, 작거나 유사한 많은 파일에서 압축을 극적으로 향상시킵니다( python-zstandard 사전 문서 및 Nigel Tao의 작업 예제참조). 구현은 “비정형” 및 “정형” 사전을 모두 허용합니다 (토론).
Brotli: 웹 콘텐츠(예: WOFF2 글꼴, HTTP)에 최적화되어 있습니다. 정적 사전과 DEFLATE와 유사한 LZ+엔트로피 코어를 혼합합니다. 사양은 RFC 7932이며, WBITS가 [10, 24]인 2WBITS−16의 슬라이딩 윈도우(1KiB−16B ~ 16MiB−16B)와 임의 접근을 시도하지 않음을 명시합니다. Brotli는 웹 텍스트에서 gzip을 자주 능가하며 빠르게 디코딩됩니다.
ZIP 컨테이너: ZIP은 다양한 압축 방법 (deflate, store, zstd 등)으로 항목을 저장할 수 있는 파일 아카이브입니다. 사실상의 표준은 PKWARE의 APPNOTE입니다( APPNOTE 포털, 호스팅된 사본, LC 개요 ZIP 파일 형식(PKWARE) / ZIP 6.3.3참조).
LZ4는 적당한 비율로 원시 속도를 목표로 합니다. 프로젝트 페이지 (「매우 빠른 압축」)와 프레임 형식을 참조하십시오. 압축 해제가 RAM 속도에 가까워야 하는 인메모리 캐시, 원격 측정 또는 핫 경로에 이상적입니다.
XZ / LZMA는 비교적 느린 압축으로 밀도(훌륭한 비율)를 추구합니다. XZ는 컨테이너입니다. 무거운 작업은 일반적으로 LZMA/LZMA2(LZ77과 유사한 모델링 + 범위 코딩)에 의해 수행됩니다. .xz 파일 형식, LZMA 사양(Pavlov), 리눅스 커널 노트 XZ 임베디드를 참조하십시오. XZ는 일반적으로 gzip보다 압축률이 높으며 종종 높은 비율의 최신 코덱과 경쟁하지만 인코딩 시간이 더 깁니다.
bzip2는 버로우즈-휠러 변환(BWT), move-to-front, RLE 및 허프만 코딩을 적용합니다. 일반적으로 gzip보다 작지만 느립니다. 공식 설명서 와 man 페이지 (리눅스)를 참조하십시오.
“창 크기”가 중요합니다. DEFLATE 참조는 32KiB만 되돌아볼 수 있습니다 (RFC 1951 및 PNG의 32KiB 상한 여기에 명시됨). Brotli의 창은 약 1KiB에서 16MiB까지 다양합니다 (RFC 7932). Zstd는 레벨별로 창과 검색 깊이를 조정합니다 (RFC 8878). 기본 gzip/zstd/brotli 스트림은 순차적 디코딩을 위해 설계되었습니다. 기본 형식은 임의 접근을 약속하지 않습니다. 하지만 컨테이너(예: tar 인덱스, 청크 프레이밍 또는 형식별 인덱스)를 통해 계층화할 수 있습니다.
위의 형식은 무손실입니다. 정확한 바이트를 재구성할 수 있습니다. 미디어 코덱은 종종 손실입니다. 더 낮은 비트 전송률을 달성하기 위해 감지할 수 없는 세부 정보를 버립니다. 이미지에서 클래식 JPEG(DCT, 양자화, 엔트로피 코딩)는 ITU-T T.81 / ISO/IEC 10918-1에 표준화되어 있습니다. 오디오에서 MP3(MPEG-1 Layer III) 및 AAC(MPEG-2/4)는 지각 모델 및 MDCT 변환에 의존합니다( ISO/IEC 11172-3, ISO/IEC 13818-7, MDCT 개요 여기참조). 손실 및 무손실은 공존할 수 있습니다(예: UI 자산용 PNG, 이미지/비디오/오디오용 웹 코덱).
이론: 섀넌 1948 · 속도-왜곡 · 코딩: 허프만 1952 · 산술 코딩 · 범위 코딩 · ANS. 형식: DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 프레임 · XZ 형식. BWT 스택: 버로우즈-휠러(1994) · bzip2 설명서. 미디어: JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
결론: 데이터와 제약 조건에 맞는 압축기를 선택하고, 실제 입력으로 측정하고, 사전과 스마트 프레이밍의 이점을 잊지 마십시오. 올바른 조합으로 정확성이나 이식성을 희생하지 않고 더 작은 파일, 더 빠른 전송, 더 빠른 앱을 얻을 수 있습니다.
파일 압축은 파일 또는 파일들의 크기를 줄이는 과정으로, 일반적으로 저장 공간을 절약하거나 네트워크를 통한 전송을 가속화하기 위해 사용됩니다.
파일 압축은 데이터의 중복성을 식별하고 제거함으로써 작동합니다. 원래의 데이터를 더 작은 공간에 인코딩하기 위해 알고리즘을 사용합니다.
파일 압축의 두 가지 주요 유형은 손실 없는 압축과 손실 압축입니다. 손실 없는 압축은 원래 파일을 완벽하게 복원할 수 있게 하는 반면, 손실 압축은 데이터 품질의 일부 손실을 감수하면서 더 큰 크기 축소를 가능하게 합니다.
파일 압축 도구의 인기 있는 예는 ZIP과 RAR 같은 다양한 압축 형식을 지원하는 WinZip입니다.
손실 없는 압축에서는 품질이 변하지 않습니다. 그러나 손실 압축에서는 파일 크기를 더욱 크게 줄이기 위해 중요하지 않은 데이터를 제거하기 때문에 품질 저하가 눈에 띄게 될 수 있습니다.
네, 특히 손실 없는 압축에서는 데이터 무결성 측면에서 파일 압축이 안전합니다. 그러나 모든 파일과 마찬가지로, 압축된 파일도 멀웨어나 바이러스의 대상이 될 수 있으므로, 항상 신뢰할 수 있는 보안 소프트웨어를 갖추는 것이 중요합니다.
거의 모든 종류의 파일들은 압축이 가능하며, 이에는 텍스트 파일, 이미지, 오디오, 비디오, 소프트웨어 파일이 포함됩니다. 그러나, 압축 가능한 수준은 파일 유형에 따라 크게 달라질 수 있습니다.
ZIP 파일은 파일의 크기를 줄이는 데 손실 없는 압축을 사용하는 파일 형식의 일종입니다. ZIP 파일 안에는 여러 파일이 효과적으로 한 개의 파일로 묶여 있어 공유가 더욱 쉽습니다.
기술적으로는 가능합니다, 그러나 추가적인 크기 줄임은 최소한이거나 심지어 역효과일 수 있습니다. 이미 압축된 파일을 다시 압축하려고 하면, 압축 알고리즘이 추가하는 메타데이터 때문에 파일의 크기가 증가하기도 합니다.
파일을 압축 해제하려면 일반적으로 압축 해제 또는 압축 풀기 도구, 예를 들면 WinZip이나 7-Zip 같은 도구가 필요합니다. 이러한 도구들은 원래의 파일을 압축된 형식에서 추출할 수 있습니다.