이 가이드는 리눅스 운영체제에서 .ZIP, .TAR, .TAR.GZ 파일을 생성하고, 열고, 내용물을 추출하는 방법을 설명합니다.
배경 지식
데이터 압축은 오랜 세월 동안 우리에게 매우 유용한 기술이었습니다. 메일로 전송할 이미지가 담긴 zip 파일이든, 서버에 저장해 둔 압축 백업 데이터든, 우리는 소중한 하드 드라이브 공간을 절약하거나 파일 다운로드를 수월하게 만들기 위해 데이터 압축을 활용합니다. 어떤 압축 포맷은 데이터를 60% 이상까지 줄여 주기도 합니다. 이 글에서는 리눅스 머신에서 파일과 디렉터리를 압축하고 해제하는 방법을 몇 가지 대표적인 포맷을 중심으로 소개합니다. zip, tar, tar.gz, tar.bz2의 기본적인 사용법을 다룰 예정이며, 이들은 리눅스 환경에서 가장 널리 쓰이는 압축 포맷입니다.
참고: 윈도우용 튜토리얼이 필요하시다면 '윈도우에서 tar.gz 파일 여는 방법' 문서를 확인해 보세요.
각 포맷의 사용법을 살펴보기에 앞서, 다양한 아카이브 포맷을 사용하며 쌓은 경험을 몇 가지 나누려 합니다. 물론 여기서 다루는 것은 몇 가지 데이터 압축 포맷뿐이며, 실제로는 훨씬 더 많은 포맷이 존재합니다. 저는 개인적으로 두세 가지 익숙한 압축 포맷을 정해 꾸준히 사용하는 방식을 선호합니다. zip 포맷은 확실히 그중 하나입니다. zip은 사실상 데이터 압축의 표준으로 자리 잡았고 윈도우에서도 잘 작동하기 때문입니다. 저는 윈도우 사용자와 공유할 가능성이 있는 파일에는 zip을 사용하고, 맥과 리눅스 머신에서만 사용할 파일에는 tar.gz 포맷을 즐겨 활용합니다.
리눅스에서 ZIP 파일 다루기
zip은 오늘날 가장 널리 사용되는 아카이브 포맷 중 하나입니다. 가장 큰 장점은 리눅스, 윈도우, macOS 등 모든 운영체제 플랫폼에서 사용할 수 있고 대부분 별도 설정 없이 기본으로 지원된다는 점입니다. 반면 단점은 압축률이 최고 수준은 아니라는 것인데, 이 부분에서는 tar.gz와 tar.bz2가 훨씬 뛰어난 성능을 보여줍니다. 그럼 바로 사용법을 알아보겠습니다.
zip으로 디렉터리를 압축하려면 다음 명령어를 사용합니다:
# zip -r archive_name.zip directory_to_compress
zip 아카이브를 추출하는 방법은 다음과 같습니다:
# unzip archive_name.zip
리눅스에서 TAR 파일 다루기
tar는 리눅스 시스템에서 매우 흔히 쓰이는 아카이브 포맷입니다. tar의 장점은 파일을 묶는 데 걸리는 시간과 CPU 부담이 매우 적다는 것이지만, 그만큼 압축률도 높지 않습니다. tar는 리눅스/유닉스판 zip이라고 할 만합니다 — 빠르고 간편하지만 성능은 무난한 수준입니다. 디렉터리를 압축하는 방법은 다음과 같습니다:
# tar -cvf archive_name.tar directory_to_compress
아카이브를 추출하려면 다음 명령어를 사용합니다:
# tar -xvf archive_name.tar
이 명령은 현재 디렉터리에 아카이브 안의 파일들을 추출합니다. 필요하다면 다른 디렉터리에 추출할 수도 있습니다:
# tar -xvf archive_name.tar -C /tmp/extract_here/
리눅스에서 TAR.GZ 파일 다루기
이 포맷은 제가 대부분의 압축 작업에서 가장 즐겨 사용하는 방식입니다. 압축률이 상당히 좋으면서도 압축 과정에서 CPU를 과도하게 소모하지 않기 때문입니다. 디렉터리를 압축하려면 다음 구문을 사용합니다:
# tar -zcvf archive_name.tar.gz directory_to_compress
아카이브를 해제하려면 다음 구문을 사용합니다:
# tar -zxvf archive_name.tar.gz
이 명령은 현재 디렉터리에 archive_name.tar.gz 아카이브의 파일들을 추출합니다. tar 포맷과 마찬가지로 다른 디렉터리에 추출할 수도 있습니다:
# tar -zxvf archive_name.tar.gz -C /tmp/extract_here/
리눅스에서 TAR.BZ2 파일 다루기
이 포맷은 여기서 소개한 포맷 중 가장 뛰어난 압축률을 자랑합니다. 하지만 그만큼 시간과 CPU 비용이 더 들어간다는 점을 감수해야 합니다. tar.bz2로 디렉터리를 압축하는 방법은 다음과 같습니다:
# tar -jcvf archive_name.tar.bz2 directory_to_compress
아카이브를 추출하려면 다음 명령어를 사용합니다:
# tar -jxvf archive_name.tar.bz2
이 명령은 현재 디렉터리에 파일들을 추출합니다. 다른 디렉터리에 추출하려면 다음과 같이 입력합니다:
# tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/
자주 쓰는 옵션 정리
명령어에 사용된 옵션들의 의미를 간단히 정리하면 다음과 같습니다:
- -c: 새 아카이브 생성
- -x: 아카이브 추출
- -v: 처리 과정 화면 출력(verbose)
- -f: 아카이브 파일 이름 지정
- -z: gzip 필터 적용(.tar.gz 생성/해제)
- -j: bzip2 필터 적용(.tar.bz2 생성/해제)
- -C: 추출 대상 디렉터리 지정
마무리
데이터 압축은 특히 백업 작업에서 매우 유용합니다. 정기적으로 파일을 백업하는 셸 스크립트를 사용하고 있다면, 여기서 배운 압축 포맷 중 하나를 활용해 백업 용량을 줄이는 것을 고려해 보세요.
시간이 지나면 압축률과 압축에 걸리는 시간·CPU 사용량 사이에는 트레이드오프가 있다는 사실을 자연스럽게 깨닫게 됩니다. 빠르지만 압축 효율은 다소 낮아도 되는 상황과, 높은 압축률이 필요하고 조금 더 기다릴 여유가 있는 상황을 스스로 판단할 수 있게 될 것입니다.