개요
우분투 환경에서 bzip2 압축 파일이 깨지거나 손상되었을 때 유용한 bzip2recover 명령어의 동작 원리와 실무 활용법을 살펴봅니다. 고장 난 아카이브에서 온전한 블록 데이터를 추출하고 복구 결과를 판독하는 전 과정을 직접 실습해 봅니다.
1. 실습 환경 준비 및 멀티 블록 bzip2 아카이브 생성
bzip2 및 복구 도구 실습을 진행하기 위해 패키지 목록을 최신화하고 bzip2 패키지를 설치합니다.

실습 과정에서 생성되는 파일들을 안전하게 관리하기 위해 전용 디렉터리를 생성하고 이동합니다.

복구 테스트에 사용할 2MB 크기의 임의 텍스트 데이터를 생성하여 sample_data.txt 파일로 저장합니다.

bzip2 명령어는 고성능 압축 알고리즘을 사용하여 파일을 블록 단위로 압축하는 도구입니다.
원본 파일을 보존하면서 여러 개의 블록이 생성되도록 최소 블록 크기(100KB) 옵션을 지정하여 압축합니다.
⚙️ [주요 옵션]
-k : 압축 또는 압축 해제 후 원본 파일을 삭제하지 않고 그대로 유지합니다.-1 ~ -9 : 압축 블록 크기를 100KB부터 900KB 단위로 설정합니다.-d : 압축된 bzip2 파일의 압축을 해제합니다.-t : 압축 파일의 무결성을 검사하여 손상 여부를 확인합니다.-v : 압축률과 처리 상태 등 상세한 정보를 화면에 표시합니다.-f : 동일한 이름의 파일이 이미 존재할 경우 강제로 덮어씁니다.

원본 텍스트 파일과 새로 압축된 bzip2 파일의 생성 여부 및 용량을 사람이 읽기 쉬운 단위로 확인합니다.

2. 아카이브 파일 손상 유발 및 무결성 오류 확인
실습 작업을 계속 진행하기 위해 작업 디렉터리인 ~/bzip2_demo로 이동합니다.

원본 압축 파일을 안전하게 보존하면서 손상 테스트를 진행하기 위해 sample_data.txt.bz2 파일을 corrupted_data.bz2로 복사합니다.

압축 파일 내부 데이터 손상을 재현하기 위해 dd 명령어를 사용하여 corrupted_data.bz2 파일의 특정 위치에 무작위 바이트를 덮어씁니다.

손상된 corrupted_data.bz2 파일의 무결성을 검사하여 블록별 처리 상태를 점검하고 CRC 오류 출력을 확인합니다.

3. bzip2recover 실행 및 개별 블록 파일 추출
복구 작업을 진행하기 위해 실습 파일들이 위치한 작업 디렉터리인 ~/bzip2_demo로 이동합니다.

bzip2recover 명령어는 손상된 bzip2 파일 내부의 블록 헤더를 검색하여 온전한 블록들을 개별 파일로 추출합니다.corrupted_data.bz2 아카이브를 복구하여 정상 블록들을 rec* 형태의 독립된 bzip2 파일들로 자동 분리합니다.

bzip2recover에 의해 분리 및 생성된 개별 블록 파일들의 목록과 상세 정보를 확인합니다.

4. 복구 블록 검증 및 데이터 병합 추출
추출된 블록 파일들을 검증하고 데이터를 병합하기 위해 실습 작업 디렉터리인 ~/bzip2_demo로 이동합니다.

bzip2 -t 명령어를 반복 실행하여 분리된 각 블록 파일의 무결성을 개별 검증하고 정상 블록 여부를 확인합니다.
손상된 블록을 제외하고 온전하게 보존된 나머지 블록들이 정상 상태로 식별됩니다.

bzip2 -dc 명령어로 각 블록 파일의 압축을 해제하면서 표준 출력을 recovered_data.txt 파일에 순차적으로 덧붙여 병합합니다.
오류가 발생한 블록은 건너뛰고 정상 블록의 데이터만 단일 텍스트 파일로 재구성합니다.

ls -lh 명령어를 실행하여 원본 파일 sample_data.txt와 새로 병합된 recovered_data.txt 파일의 용량을 비교 확인합니다.

지금까지 우분투에서 손상된 bzip2 파일을 bzip2recover 명령어로 복구하는 방법을 간단하게 살펴보았습니다.
압축 파일 손상 오류가 발생했을 때 당황하지 마시고, 오늘 소개해 드린 블록 단위 복구 절차를 차근차근 적용해 소중한 데이터를 안전하게 되살려 보시기 바랍니다.