우분투 손상된 bzip2 파일 복구: bzip2recover 사용법 완벽 가이드

개요

우분투 환경에서 bzip2 압축 파일이 깨지거나 손상되었을 때 유용한 bzip2recover 명령어의 동작 원리와 실무 활용법을 살펴봅니다. 고장 난 아카이브에서 온전한 블록 데이터를 추출하고 복구 결과를 판독하는 전 과정을 직접 실습해 봅니다.

1. 실습 환경 준비 및 멀티 블록 bzip2 아카이브 생성

bzip2 및 복구 도구 실습을 진행하기 위해 패키지 목록을 최신화하고 bzip2 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y bzip2

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

mkdir -p ~/bzip2_demo && cd ~/bzip2_demo

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

base64 /dev/urandom | head -c 2M > sample_data.txt

bzip2 명령어는 고성능 압축 알고리즘을 사용하여 파일을 블록 단위로 압축하는 도구입니다.
원본 파일을 보존하면서 여러 개의 블록이 생성되도록 최소 블록 크기(100KB) 옵션을 지정하여 압축합니다.
⚙️ [주요 옵션]

-k : 압축 또는 압축 해제 후 원본 파일을 삭제하지 않고 그대로 유지합니다.
-1 ~ -9 : 압축 블록 크기를 100KB부터 900KB 단위로 설정합니다.
-d : 압축된 bzip2 파일의 압축을 해제합니다.
-t : 압축 파일의 무결성을 검사하여 손상 여부를 확인합니다.
-v : 압축률과 처리 상태 등 상세한 정보를 화면에 표시합니다.
-f : 동일한 이름의 파일이 이미 존재할 경우 강제로 덮어씁니다.

bzip2 -k -1 sample_data.txt

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

ls -lh sample_data.txt*

2. 아카이브 파일 손상 유발 및 무결성 오류 확인

실습 작업을 계속 진행하기 위해 작업 디렉터리인 ~/bzip2_demo로 이동합니다.

cd ~/bzip2_demo

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

cp sample_data.txt.bz2 corrupted_data.bz2

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

dd if=/dev/urandom of=corrupted_data.bz2 bs=1 count=64 seek=10240 conv=notrunc status=none

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

bzip2 -tvv corrupted_data.bz2 || true

3. bzip2recover 실행 및 개별 블록 파일 추출

복구 작업을 진행하기 위해 실습 파일들이 위치한 작업 디렉터리인 ~/bzip2_demo로 이동합니다.

cd ~/bzip2_demo

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

bzip2recover corrupted_data.bz2

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

ls -la rec*corrupted_data.bz2

4. 복구 블록 검증 및 데이터 병합 추출

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

cd ~/bzip2_demo

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

for f in rec*corrupted_data.bz2; do bzip2 -t “$f” && echo “$f: 정상”; done

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

for f in rec*corrupted_data.bz2; do bzip2 -dc “$f” » recovered_data.txt 2>/dev/null || true; done

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

ls -lh sample_data.txt recovered_data.txt

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