개요
리눅스 환경에서 bzip2로 압축된 텍스트 파일이나 로그의 차이점을 확인할 때 압축을 매번 해제하는 것은 비효율적입니다. bzdiff 명령어를 사용하면 압축을 풀지 않고도 bzip2 파일 간 또는 일반 텍스트 파일과의 차이점을 즉시 비교할 수 있습니다. 본 글에서는 bzdiff의 필수 실무 사용 패턴과 유용한 옵션, 스크립트 작성 시 주의해야 할 점을 완벽하게 정리합니다.
bzdiff 실행 환경 준비 및 두 압축 파일 기본 비교
bzdiff 실습 진행을 위해 시스템에 필요한 도구가 있는지 확인하고 bzip2와 diffutils 패키지를 설치합니다.

비교 실습에 활용할 서로 다른 포트 번호(80, 8080)가 입력된 두 개의 샘플 설정 파일(config_v1.txt, config_v2.txt)을 생성합니다.

원본 텍스트 파일을 유지한 상태로 비교 테스트용 압축 파일을 생성하기 위해 bzip2 -k config_v1.txt && bzip2 -k config_v2.txt 명령어를 실행합니다.

bzdiff 명령어는 압축을 풀지 않고 두 bzip2 압축 파일의 내용을 직접 비교하여 변경된 라인을 기본 diff 형식으로 출력합니다.
실행 결과 2번째 라인의 포트 설정이 port=80에서 port=8080으로 변경되었음을 확인할 수 있습니다.
⚙️ [주요 옵션]
-u : 변경 전후 내용을 보기 쉽게 표시하는 통합 diff(unified diff) 형식으로 출력합니다.-c : 변경된 부분의 앞뒤 문맥을 함께 보여주는 문맥 diff(context diff) 형식으로 출력합니다.-q : 상세 내용 대신 두 파일의 일치 여부만 간략히 확인합니다.-i : 영문 대소문자의 차이를 무시하고 내용을 비교합니다.-w : 공백 문자(스페이스, 탭)의 차이를 무시하고 비교합니다.-y : 두 파일의 내용을 화면 좌우(side-by-side)로 나란히 배치하여 비교합니다.

압축 파일(.bz2)과 일반 텍스트 파일 직접 비교하기
압축 파일과 비교할 새로운 설정 파일(config_live.txt)을 생성하기 위해 echo -e "server=web01\nport=443\nstatus=maintenance" > config_live.txt 명령어를 실행합니다.

bzdiff 명령어를 사용하여 압축 파일(config_v1.txt.bz2)과 압축되지 않은 일반 텍스트 파일(config_live.txt)의 내용을 직접 비교합니다.
실행 결과 별도로 압축을 풀지 않고도 2~3번째 라인의 포트(port=80에서 port=443) 및 상태(status=active에서 status=maintenance) 설정이 변경되었음을 바로 확인할 수 있습니다.

Unified Diff(-u) 옵션을 활용한 가독성 높은 차이점 출력
bzdiff 명령어에 -u 옵션을 지정하여 두 압축 파일(config_v1.txt.bz2, config_v2.txt.bz2)의 차이점을 통합 diff(Unified diff) 형식으로 비교합니다.
실행 결과 앞뒤 문맥 라인과 함께 기존 port=80이 삭제되고(-) 새롭게 port=8080이 추가된(+) 변경 내역을 한눈에 읽기 쉽게 확인할 수 있습니다.

셸 스크립트 연동을 위한 종료 코드(Exit Code) 확인 및 실무 주의점
bzdiff 명령어로 동일한 두 압축 파일(config_v1.txt.bz2)을 비교하여 일치 시 반환되는 종료 코드($?)를 확인합니다.
두 파일의 내용이 완전히 일치하면 종료 코드 0이 반환되므로 && 연산자 뒤의 메시지가 정상적으로 실행됩니다.

bzdiff 명령어로 내용이 서로 다른 두 압축 파일(config_v1.txt.bz2, config_v2.txt.bz2)을 비교하여 차이가 있을 때의 종료 코드를 확인합니다.
내용에 차이가 발생하면 종료 코드 1을 반환하므로 || 연산자를 활용하여 셸 스크립트에서 자동화 조건 분기를 구성할 수 있습니다.

비교 실습 과정에서 생성했던 샘플 텍스트 파일과 압축 파일들을 모두 삭제하여 테스트 환경을 정리하기 위해 rm -f config_v1.txt config_v2.txt config_live.txt config_v1.txt.bz2 config_v2.txt.bz2 명령어를 실행합니다.

지금까지 압축을 풀지 않고도 bzip2 압축 파일의 차이점을 빠르게 비교할 수 있는 bzdiff 명령어의 사용법을 간단하게 살펴보았습니다.
대용량 압축 로그나 백업 파일 분석 시 유용하게 활용해 보시기 바랍니다.