우분투 bzip2 명령어 사용법 완벽 정리: 옵션별 압축과 해제 실습

개요

리눅스 환경에서 높은 압축률을 자랑하는 bzip2 명령어의 핵심 옵션과 실무 활용법을 살펴봅니다. 파일 압축 및 해제 과정에서 원본 파일을 유지하는 방법부터 압축률 비교까지 터미널 실습을 통해 알아봅니다. 실습 예제를 차례대로 따라 하며 bzip2와 bunzip2, bzcat의 동작 방식을 한눈에 익힐 수 있습니다.

bzip2 설치 확인 및 기본 압축과 원본 보존 (-k, -v)

bzip2 명령어 실습을 진행하기 위해 패키지 설치 여부를 확인하고 필요한 패키지를 설치합니다.

which bzip2 || (sudo apt-get update -qq && sudo apt-get install -y bzip2)

기본 압축 동작을 테스트하기 위해 echo 명령어로 실습용 텍스트 파일 sample1.txt를 생성합니다.

echo ‘Hello Ubuntu Linux bzip2 compression test’ > sample1.txt

bzip2 명령어는 블록 정렬 알고리즘을 사용하여 파일을 높은 압축률로 압축하는 유틸리티입니다.
기본적으로 압축이 완료되면 원본 파일이 삭제되고 .bz2 확장자를 가진 압축 파일이 생성되며, -v 옵션을 사용하면 압축률과 처리 과정을 확인할 수 있습니다.
⚙️ [주요 옵션]

-d : 압축된 .bz2 파일의 압축을 해제합니다.
-k : 압축 또는 압축 해제 작업 후 원본 파일을 삭제하지 않고 그대로 보존합니다.
-v : 처리 중인 파일의 진행 상황과 압축률 정보를 화면에 상세히 출력합니다.
-f : 출력 파일이 이미 존재하더라도 경고 없이 덮어씁니다.
-t : 압축 파일이 손상되지 않았는지 무결성을 검사합니다.
-c : 결과를 파일로 직접 저장하지 않고 표준 출력(stdout)으로 전송합니다.
-1 ~ -9 : 압축 시 사용할 블록 크기를 지정하여 압축률과 속도를 조절합니다(기본값은 -9).

bzip2 -v sample1.txt

원본 파일 보존 옵션을 테스트하기 위해 echo 명령어로 sample2.txt 파일을 생성합니다.

echo ‘Keep original file option test’ > sample2.txt

bzip2 -vk sample2.txt 명령어를 실행하여 진행 상황을 출력하면서 원본 파일이 삭제되지 않도록 보존한 채 압축을 진행합니다.
-k 옵션을 함께 지정하면 원본 sample2.txt 파일과 생성된 sample2.txt.bz2 압축 파일이 모두 유지됩니다.

bzip2 -vk sample2.txt

ls -l sample* 명령어를 실행하여 원본 파일이 삭제된 sample1.txt.bz2와, -k 옵션 덕분에 원본 파일이 함께 유지된 sample2.txt 및 sample2.txt.bz2를 비교 확인합니다.

ls -l sample*

압축 해제 및 무결성 검증 (-d, -t, bunzip2)

bzip2 -tv sample1.txt.bz2 명령어를 실행하여 압축 파일의 손상 여부와 무결성을 검사합니다.
-t 옵션은 압축을 실제로 해제하지 않고 데이터의 무결성만 검증하며, -v 옵션을 통해 진행 상태를 화면에 상세히 표시합니다.

bzip2 -tv sample1.txt.bz2

bzip2 -dv sample1.txt.bz2 명령어를 실행하여 진행 과정을 확인하면서 파일의 압축을 해제합니다.
-k 옵션을 함께 지정하지 않았으므로 압축 해제가 완료되면 .bz2 압축 파일은 자동으로 삭제되고 복원된 sample1.txt 파일만 남습니다.

bzip2 -dv sample1.txt.bz2

bunzip2 -vk sample2.txt.bz2 명령어를 실행하여 원본 압축 파일을 보존한 채 압축을 해제합니다.
bunzip2는 bzip2 -d와 동일하게 동작하는 압축 해제 전용 명령어이며, -k 옵션을 사용하여 해제 후에도 sample2.txt.bz2 압축 파일이 삭제되지 않도록 유지합니다.

bunzip2 -vk sample2.txt.bz2

압축 해제 후 복원된 파일과 압축 파일의 보존 상태를 확인하기 위해 ls -l sample* 명령어를 실행합니다.

ls -l sample*

압축 해제 없이 내용 확인 및 표준 출력 활용 (-c, bzcat)

표준 출력을 활용한 압축 및 파일 내용 확인 실습을 진행하기 위해 echo 명령어로 sample3.txt 파일을 생성합니다.

echo ‘Check bzcat content without extraction’ > sample3.txt

bzip2 -c sample3.txt > sample3.txt.bz2 명령어를 실행하여 표준 출력을 파일로 리다이렉션하는 방식으로 압축 파일을 생성합니다.
-c 옵션은 압축 결과를 파일로 직접 쓰지 않고 표준 출력(stdout)으로 전송하므로, 리다이렉션 연산자(>)와 함께 사용하면 원본 파일을 그대로 보존하면서 새 압축 파일을 만들 수 있습니다.

bzip2 -c sample3.txt > sample3.txt.bz2

bzcat sample3.txt.bz2 명령어를 실행하여 압축을 풀지 않고 파일 내부의 텍스트 내용을 터미널 화면에 즉시 출력합니다.
bzcat 명령어는 bzip2 -dc와 동일하게 동작하며, 디스크 공간을 사용하거나 압축 해제 과정을 거치지 않고도 파일 내용을 빠르게 확인할 수 있습니다.

bzcat sample3.txt.bz2

ls -l sample3* 명령어를 실행하여 표준 출력 방식으로 압축을 진행한 결과 원본 sample3.txt 파일과 생성된 sample3.txt.bz2 압축 파일이 모두 정상적으로 보존되어 있는지 확인합니다.

ls -l sample3*

압축 레벨 조절 (-1 ~ -9) 및 용량 비교

압축 레벨별 압축률과 파일 크기 차이를 비교하기 위한 테스트용 텍스트 데이터를 생성하기 위해 seq 1 50000 > large_data.txt 명령어를 실행합니다.

seq 1 50000 > large_data.txt

bzip2 -1 -vk -c large_data.txt > large_fast.bz2 명령어를 실행하여 압축 속도를 우선하는 가장 빠른 레벨인 -1 옵션으로 압축을 진행합니다.
-1 옵션은 100k 크기의 작은 블록을 사용하여 메모리 사용량을 줄이고 빠른 속도로 압축 작업을 완료합니다.

bzip2 -1 -vk -c large_data.txt > large_fast.bz2

bzip2 -9 -vk -c large_data.txt > large_best.bz2 명령어를 실행하여 압축 효율을 극대화하는 최고 레벨인 -9 옵션으로 압축을 진행합니다.
-9 옵션은 기본값으로 사용되는 설정이며, 900k 크기의 블록을 사용하여 처리 자원을 더 투입하는 대신 높은 압축률을 목표로 동작합니다.

bzip2 -9 -vk -c large_data.txt > large_best.bz2

ls -lh large* 명령어를 실행하여 원본 텍스트 파일과 각 압축 레벨별로 생성된 압축 파일들의 용량을 비교합니다.
283K 크기의 원본 데이터 대비 -1 옵션으로 생성된 large_fast.bz2(56K)와 -9 옵션으로 생성된 large_best.bz2(67K)의 크기를 확인하여 레벨별 압축 결과를 한눈에 비교할 수 있습니다.

ls -lh large*

지금까지 우분투 환경에서 bzip2 명령어를 활용한 옵션별 파일 압축과 해제 방법을 실습과 함께 간단하게 정리해보았습니다.
필요한 상황에 맞춰 적절한 옵션을 조합하여 파일과 디스크 공간을 더욱 효율적으로 관리해 보시기 바랍니다.