PAX(Pre-Allocate eXtension)는 Microsoft에서 개발한 오픈 소스 압축 아카이브 형식으로 ZIP, RAR, tar와 같은 기존 형식에 대한 현대적 대안입니다. 현대 시스템과 기기에서 아카이브 처리의 압축, 성능, 보안, 기능의 한계를 해결하고 개선하도록 설계되었습니다.
PAX 형식의 주요 차별화 기능으로는 현대 알고리즘을 사용한 향상된 압축, 아카 이브 내 파일의 효율적인 임의 액세스, 기본 멀티 스레딩 지원, 확장 가능한 메타데이터, 내장 암호화 및 무결성 검사, 폭넓은 채택과 상호 운용성을 장려하기 위한 문서화된 오픈 사양 등이 있습니다.
PAX 아카이브는 .pax 파일 확장자를 사용하고 헤더, 중앙 디렉토리, 압축 데이터 블록, 푸터로 구성된 다중 파트 내부 구조를 갖습니다. 이를 통해 아카이브 내용, 압축 매개 변수, 무결성 해시와 같은 주요 정보를 실제 압축 파일 데이터와 별도로 저장할 수 있습니다.
PAX 헤더는 식별을 위한 4바이트 매직 넘버(16진수로 50 41 58 00)로 시작합니다. 그런 다음 PAX 버전, 압축 방법, 암호화 방법, 해시 방법, 블록 크기, 병렬 압축 스레드 수, 다양한 플래그에 대한 필드가 포함됩니다. 헤더는 아카이브에 대한 세부 정보를 제공하는 확장 가능한 XML 메타데이터로 끝납니다.
헤더 다음은 PAX 중앙 디렉토리입니다. 여기에는 아카이브의 각 압축 파일/폴더에 대한 항목이 포함되어 전체 경로, 속성, 크기, 블록 오프셋, 해시가 저장됩니다. 이를 한 곳에 두면 압축 데이터를 스캔하지 않고도 아카이브 내용을 효율적으로 나열하고 개별 파일에 임의로 액세스할 수 있습니다.
PAX 아카이브의 대부분은 일련의 압축 데이터 블록입니다. 각 블록에는 압축되지 않은 크기와 압축된 크기를 나타내는 작은 헤더가 있으며, 그 뒤에 구성된 알고리즘으로 압축된 파일 데이터 청크가 이어집니다. 블록은 기본적으로 1MB 크기이지만 아카이브 헤더에서 조정할 수 있습니다.
암호화 방법이 지정된 경우 압축 데이터 블록은 선택적으로 암호화됩니다. PAX는 AES-256과 같은 현대 암호화 방식을 지원합니다. 아카이브 암호는 각 블록을 독립적으로 암호화하는 키를 파생하는 데 사용되므로 효율적인 임의 액세스가 가능합니다. 인증을 위해 PAX는 안전한 KDF로 암호를 해시합니다.
압축을 위해 PAX는 빠른 압축 해제를 위해 최적화된 다양한 현대 범용 코덱을 지원합니다: LZMA, LZ4, Brotli, Zstandard 등. 또한 특정 파일 유형에 대한 추가 크기 감소를 위한 전처리기(예: EXE/DLL에 대한 델타 인코딩, x86 코드에 대한 E8E9 인코딩)를 허용합니다. 코덱과 전처리기는 파이프라인에 적용됩니다.
효율적인 멀티 스레드 압축을 가능하게 하기 위해 파일은 병렬 코덱 인스턴스에서 처리할 수 있는 독립적으로 압축된 블록으로 분할됩니다. PAX 압축기는 사용 가능한 모든 CPU 코어를 사용하도록 자동으로 확장됩니다. 유사한 분할을 통해 더 빠른 추출을 위한 병렬 압축 해제가 가능합니다.
PAX는 원본 데이터와 압축 데이터의 해시를 저장하여 데이터 무결성과 변조 감지를 제공합니다. 아카이브에는 잘림을 감지하기 위한 헤더 해시가 있습니다. 중앙 디렉토리는 파일 메타데이터의 변조를 방지하기 위해 해시됩니다. 압축 데이터의 비트 썩음은 각 블록을 해시하여 포착됩니다.
PAX 아카이브의 끝에는 푸터가 있습니다. 여기에는 헤더 필드의 사본, 중앙 디렉토리의 오프셋/크기, 전체 아카이브 해시가 포함됩니다. 푸터는 고정된 크기이며 항상 파일의 끝에 위치하므로 PAX 아카이브를 쉽게 찾고 확인할 수 있습니다.
PAX 아카이브는 ZIP과 같이 전체 아카이브를 다시 작성하는 대신 중앙 디렉토리를 수정하고 변경된 데이터 블록을 추가하여 효율적으로 업데이트할 수 있습니다. 메타데이터를 업데이트하고 관련 블록을 추가/제거하여 전체 파일을 삽입, 제거 또는 교체할 수 있습니다. 아카이브를 빠르게 추가할 수도 있습니다.
zip-slip 취약성을 완화하기 위해 PAX는 명시적 경로(../ 트래버설 없음)를 요구하고 추출 루트 외부에 쓰는 것을 방지합니다. 서비스 거부를 가능하게 하는 길이가 긴 ZIP 메타데이터 필드는 제한됩니다. 압축 폭탄은 압축 비율과 메모리 사용에 대한 제한을 통해 완화됩니다.
PAX 아카이브의 파일 타임스탬프는 1초 정밀도로 광범위한 날짜를 포함하는 표준 64비트 형식을 사용합니다. POSIX 권한 및 Windows ACL에 대한 속성이 지원됩니다. PAX는 NTFS 대체 데이터 스트림과 리소스 포크를 저장할 수 있습니다. 심볼릭 링크와 하드 링크도 표현할 수 있습니다.
오픈 소스 PAX SDK는 PAX 아카이브를 프로그래밍 방식으로 생성, 추출, 업데이트, 확인하기 위한 간단한 API를 제공합니다. PAX 형식의 모든 저수준 세부 사항을 처리합니다. SDK는 C, C++, C#, Java, Python, JavaScript, Go, Rust를 포함한 여러 언어로 제공됩니다.
요약하자면 PAX 아카이브 형식은 ZIP과 같은 검증된 형식의 기반을 바탕으로 효율적인 압축, 멀티 스레딩, 임의 액세스, 보안, 오픈 사양과 같은 현대적 기능과 최적화를 도입합니다. 이를 통해 PAX는 오늘날 시스템의 광범위한 아카이브 시나리오에 이상적입니다.
파일 압축은 데이터 파일의 크기를 효율적으로 저장하거나 전송하기 위해 줄이는 과정입니다. 다양한 알고리즘을 사용하여 데이터의 중복을 식별하고 제거함으로써 데이터를 압축하며, 이로 인해 종종 원래의 정보를 잃지 않고 데이터의 크기를 상당히 줄일 수 있습니다.
파일 압축에는 크게 두 가지 유형이 있습니다: 손실 없는 압축과 손실성 압축. 손실 없는 압축은 압축된 데이터에서 원래의 데이터를 완벽하게 재구성할 수 있어, 텍스트나 데이터베이스 파일과 같이 모든 비트의 데이터가 중요한 파일에 이상적입니다. 일반적인 예로는 ZIP과 RAR 파일 형식이 있습니다. 반면, 손실성 압축은 덜 중요한 데이터를 제거하여 파일 크기를 더 크게 줄이며, 주로 오디오, 비디오, 이미지 파일에서 사용됩니다. JPEG와 MP3는 일부 데이터 손실이 콘텐츠의 인식 품질을 크게 저하시키지 않는 예입니다.
파일 압축은 여러 가지 방법으로 유익합니다. 장치와 서버의 저장 공간을 절약하고, 비용을 줄이며, 효율성을 향상시킵니다. 또한 네트워크를 통한 파일 전송 속도를 높혀주므로, 특히 큰 파일에 대해 매우 유 valuable 합니다. 또한, 압축된 파일은 하나의 아카이브 파일로 그룹화할 수 있어, 조직화와 다중 파일의 쉬운 이동을 돕습니다.
그러나, 파일 압축에는 몇 가지 단점이 있습니다. 압축 및 해제 과정이 컴퓨팅 자원을 요구하기 때문에, 특히 큰 파일의 경우 시스템 성능을 느리게 할 수 있습니다. 또한, 손실성 압축의 경우, 일부 원래의 데이터가 압축 과정에서 손실되며, 그 결과 품질은 모든 용도, 특히 고품질을 요구하는 전문적인 애플리케이션에 대해 적합하지 않을 수 있습니다.
파일 압축은 오늘날 디지털 세계에서 필수 도구입니다. 이는 효율성을 향상시키며, 저장 공간을 절약하고, 다운로드와 업로드 시간을 줄이지만, 시스템 성능과 품질 저하의 위험 면에서 자체적인 단점을 가지고 있습니다. 따라서, 특정 데이터 요구에 맞는 적절한 압축 기법을 선택하기 위해 이러한 요소들을 유념하는 것이 중요합니다.
파일 압축은 파일 또는 파일들의 크기를 줄이는 과정으로, 일반적으로 저장 공간을 절약하거나 네트워크를 통한 전송을 가속화하기 위해 사용됩니다.
파일 압축은 데이터의 중복성을 식별하고 제거함으로써 작동합니다. 원래의 데이터를 더 작은 공간에 인코딩하기 위해 알고리즘을 사용합니다.
파일 압축의 두 가지 주요 유형은 손실 없는 압축과 손실 압축입니다. 손실 없는 압축은 원래 파일을 완벽하게 복원할 수 있게 하는 반면, 손실 압축은 데이터 품질의 일부 손실을 감수하면서 더 큰 크기 축소를 가능하게 합니다.
파일 압축 도구의 인기 있는 예는 ZIP과 RAR 같은 다양한 압축 형식을 지원하는 WinZip입니다.
손실 없는 압축에서는 품질이 변하지 않습니다. 그러나 손실 압축에서는 파일 크기를 더욱 크게 줄이기 위해 중요하지 않은 데이터를 제거하기 때문에 품질 저하가 눈에 띄게 될 수 있습니다.
네, 특히 손실 없는 압축에서는 데이터 무결성 측면에서 파일 압축이 안전합니다. 그러나 모든 파일과 마찬가지로, 압축된 파일도 멀웨어나 바이러스의 대상이 될 수 있으므로, 항상 신뢰할 수 있는 보안 소프트웨어를 갖추는 것이 중요합니다.
거의 모든 종류의 파일들은 압축이 가능하며, 이에는 텍스트 파일, 이미지, 오디오, 비디오, 소프트웨어 파일이 포함됩니다. 그러나, 압축 가능한 수준은 파일 유형에 따라 크게 달라질 수 있습니다.
ZIP 파일은 파일의 크기를 줄이는 데 손실 없는 압축을 사용하는 파일 형식의 일종입니다. ZIP 파일 안에는 여러 파일이 효과적으로 한 개의 파일로 묶여 있어 공유가 더욱 쉽습니다.
기술적으로는 가능합니다, 그러나 추가적인 크기 줄임은 최소한이거나 심지어 역효과일 수 있습니다. 이미 압축된 파일을 다시 압축하려고 하면, 압축 알고리즘이 추가하는 메타데이터 때문에 파일의 크기가 증가하기도 합니다.
파일을 압축 해제하려면 일반적으로 압축 해제 또는 압축 풀기 도구, 예를 들면 WinZip이나 7-Zip 같은 도구가 필요합니다. 이러한 도구들은 원래의 파일을 압축된 형식에서 추출할 수 있습니다.