리눅스는 윈도우와 마찬가지로 여러 파일을 하나의 아카이브로 압축할 수 있는 다양한 압축 알고리즘을 지원합니다. 가장 널리 사용되는 ZIP 포맷은 사실상 표준이지만, 각 압축 알고리즘은 저마다 고유한 장단점을 가지고 있습니다.

gzip 대신 bzip2를 사용해야 하는 이유
gzip 명령어는 LZ77 압축 방식을 사용하는 반면, bzip2 압축 도구는 Burrows-Wheeler 변환 알고리즘을 기반으로 동작합니다.
실제 테스트에서 두 명령어를 모두 기본 압축 설정으로 실행한 뒤 결과물을 비교해 본 결과, 파일 크기 축소 측면에서는 bzip2가 더 우수한 성능을 보였습니다. 다만, 그만큼 압축에 소요되는 시간이 훨씬 길다는 단점이 있습니다.
한편 lzmash 명령어는 gzip의 최고 압축 수준인 -9 옵션을 적용한 것과 동일한 결과를 냅니다. 기본 gzip보다는 시간이 더 걸리지만, 그 결과물은 bzip2로 압축한 파일보다 크기가 더 작습니다.
bzip2로 파일 압축하기
bzip2 형식으로 파일을 압축하려면 다음 명령어를 실행합니다.
bzip2 파일명
압축 결과물은 .bz2 확장자를 갖게 됩니다. 참고로 이 도구는 압축 후 오히려 파일 크기가 커지는 경우에도 압축을 진행합니다. 이런 현상은 이미 압축된 파일을 다시 압축할 때 발생합니다.
파일 압축 해제 방법
.bz2 확장자를 가진 파일은 bunzip2 명령어로 압축을 해제할 수 있습니다.
bunzip2 파일명.bz2
bunzip2 명령어는 bzip 또는 bzip2로 압축된 모든 유효한 파일을 추출합니다. 일반 파일뿐만 아니라 bzip2 명령어로 압축된 tar 파일도 압축 해제할 수 있습니다.
bzip2로 압축된 tar 파일은 .tbz2 확장자를 사용합니다. 이 파일을 bunzip2 명령어로 압축 해제하면 파일명이 파일명.tar로 변경됩니다.
주요 명령어 옵션
다음 명령어 옵션을 활용하면 bzip2의 동작 방식을 세부적으로 조정할 수 있습니다.
- -f: 파일이 이미 BZ2 형식이더라도 강제로 압축을 진행합니다.
- -k: 압축 아카이브와 함께 원본 파일도 보존합니다.
- -s: 압축 작업에 할당되는 시스템 메모리를 줄여, 압축 완료까지 걸리는 시간이 늘어나지만 메모리 사용량을 절약합니다.
- -t: 아카이브 파일의 무결성을 검사합니다.
- -v: 명령어 실행 과정에 대한 상세한 출력 정보를 표시합니다.
또한 손상된 아카이브를 복구하려면 별도의 bzip2recover 유틸리티를 사용할 수 있습니다. 이 도구가 항상 성공하는 것은 아니지만, 압축 해제가 불가능한 아카이브를 되살릴 수 있는 마지막 수단이 될 수 있습니다.