BZIP2 압축파일 (.bz2)

Bzip2 표준

Bzip2(BZ2)는 Julian Seward가 개발한 고전적인 특허 없는 Unix 압축 유틸리티 및 파일 형식으로, Burrows-Wheeler 변환을 활용하여 고전적인 Gzip보다 훨씬 더 높은 압축률을 달성합니다.

검사 및 메타데이터

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 BZ2 파일을 식별합니다:

여기에 파일을 선택하거나 놓으십시오

비공개 - 파일은 기기를 벗어나지 않습니다

또는 붙여넣기 Ctrl+V
네트워크 전송 없음에 대한 개인정보 보호 보장: 외부 서버로 업로드된 데이터는 0바이트입니다. 모든 처리는 브라우저 샌드박스 내에서 로컬로 수행되었습니다.

바이트 단위 헤더 시그니처 (매직 바이트)

운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 BZ2 파일을 식별합니다:

16진수 시그니처 (오프셋 0):

42 5A 68

ASCII 표현: BZh

표준화: Bzip2 Open Source Standard

기술 사양

컨테이너 아키텍처스트림 헤더(“BZh”와 블록 크기 숫자 1~9), 압축 데이터 블록 및 32비트 CRC로 구성
압축Burrows-Wheeler 변환(BWT), Move-to-Front 변환(MTF) 및 허프만 코딩
바이트 엔디안빅 엔디안 비트스트림 프레이밍
색 공간해당 없음(바이트 압축 스트림)
채널 및 구조단일 파일의 압축 바이트 스트림
최대 크기길이 제한 없는 스트림(임의 크기의 파일 지원)
투명도데이터를 비트 단위로 정확하게 보존하는 100% 무손실 압축
스트리밍 및 프로그레시브블록별 독립 32비트 CRC 체크섬을 사용하는 순차 블록 스트리밍

기술 비교 매트릭스: BZ2 대 경쟁사

기술적 속성BZ2 (현재)GZXZZSTD
코어 알고리즘Burrows-Wheeler 변환(BWT)Deflate (LZ77 + 허프만)LZMA / LZMA2유한 상태 엔트로피 + LZ77
Gzip 대비 압축률Gzip보다 10~20% 작음기본 표준Gzip보다 20~30% 작음Gzip보다 10~20% 작음
압축 해제 속도느림(약 30-50 MB/s)빠름(약 300 MB/s)보통(약 100 MB/s)매우 빠름(1.5 GB/s 초과)
블록 체크섬블록당 32비트 CRC단일 스트림 CRC32스트림 CRC64스트림 xxHash64

일반적인 손상 모드 및 헥스 복구 가이드

'bzip2: Data integrity error when decompressing' 오류와 함께 추출이 중단됩니다.

근본 원인: 압축 블록의 비트가 뒤집혀 BWT 역변환 행렬이 CRC32 검증에 실패했습니다.

복구: bzip2recover 유틸리티를 사용해 손상된 섹터 주변의 정상 블록을 복구하십시오.

보안 분석 및 파서 공격 벡터

Bzip2 구현에는 과거에 정수 오버플로 결함이 발생했던 복잡한 비트스트림 정렬 및 허프만 테이블 구문 분석이 포함됩니다.

알려진 공격 벡터

  • BWT 정렬 배열 할당에서의 정수 오버플로 (예: CVE-2016-3189).
  • 허프만 디코딩 테이블 어셈블리 중 범위를 벗어난 쓰기(Out-of-bounds write).
  • 최악의 경우 이차(quadratic) BWT 정렬 시간을 유발하는 병리학적 입력 패턴을 통한 서비스 거부(DoS) 공격.

방어적 모범 사례: 강제 적용된 메모리 경계가 있는 메모리 안전 WASM 디코더를 사용하여 BZ2 파일을 디코딩하십시오.

역사적 배경 및 주요 이력

2019Federico Mena Quintero가 bzip3 및 최신 오픈 소스 이니셔티브에 맞춰 bzip2 코드베이스의 유지보수 방식을 현대화했습니다.
2000버전 1.0이 출시되어 Linux 배포판 및 패키지 관리자 전반에서 bzip2 형식이 안정화되었습니다.
1996Julian Seward가 특허 문제가 있었던 기존 bzip 형식을 대체하기 위해 bzip2 0.15를 출시했습니다.

주요 장점

  • 소스 코드 아카이브(tarball), 시스템 로그 및 텍스트 데이터베이스에서 기존 Gzip보다 일관되게 10~20% 높은 압축률을 보입니다.
  • 독립적인 블록 아키텍처(100k~900k)는 강력한 무결성 검사를 위해 블록별 32비트 CRC 체크섬을 포함합니다.
  • 많은 Linux, BSD, macOS 명령줄 배포판에서 기본 제공되며, 포함 여부는 배포판마다 다릅니다.

기술적 제한 사항 및 단점

  • Zstandard와 같은 최신 알고리즘에 비해 압축 및 압축 해제 속도가 눈에 띄게 느립니다.
  • 여러 파일이나 디렉터리를 묶으려면 단일 파일만 압축하는 bzip2를 TAR(.tar.bz2)와 함께 사용해야 합니다.
  • Gzip이나 Zstd에 비해 압축 해제 시 CPU 사용량이 더 높습니다.

흥미로운 기술적 상식

  • 'BZh' 매직 바이트는 'Burrows-Wheeler Zip Huffman'을 의미하며, 그 뒤에 백 킬로바이트 단위의 블록 크기를 나타내는 숫자('1'에서 '9')가 옵니다(예: 'BZh9' = 900 KB).
  • Linux 커널 소스 코드는 .xz로 마이그레이션하기 전 10년 넘게 .tar.bz2 형식으로만 배포되었습니다.
  • Burrows-Wheeler 변환은 데이터를 직접 압축하지 않고 문자의 순서를 치환하여 동일한 글자끼리 뭉치게 하므로, 허프만 코딩을 통해 쉽게 압축할 수 있게 됩니다.

자주 묻는 기술 질문

.gz와 .bz2는 어떻게 다릅니까?

.bz2는 버로즈-휠러 변환(Burrows-Wheeler transform)을 사용하여 .gz보다 더 작은 파일 크기를 구현하지만, 압축 및 압축 해제에 더 오랜 시간이 걸립니다.

bzip2에 bzip2recover 명령이 있는 이유는 무엇입니까?

bzip2는 데이터를 각각 고유한 CRC가 포함된 독립적인 900 KB 블록으로 압축하므로, 파일의 일부가 손상되더라도 bzip2recover를 통해 손상되지 않은 블록을 추출할 수 있습니다.

.tar.bz2 파일을 어떻게 추출할 수 있습니까?

명령줄 도구를 실행할 필요 없이, 웹 브라우저에서 File2File.app을 사용하여 .tar.bz2 파일을 직접 압축 해제할 수 있습니다.