리눅스 tar 압축과 해제 방법 (tar.gz 만들기, 풀기, 내용 확인)
리눅스 서버에서 로그를 보관하거나 백업 파일을 만들 때, 혹은 소스를 내려받아 풀 때 가장 자주 쓰는 명령어가 tar다. 이 글에서는 tar 압축 방법과 해제, 내용 확인, 특정 파일만 꺼내기까지 실무에서 자주 쓰는 형태로 정리한다. 만든 압축 파일을 매일 자동으로 남기고 싶다면 리눅스 crontab 사용법과 함께 보면 좋다.

tar와 gzip은 무엇이 다른가
tar는 원래 여러 파일과 디렉터리를 하나의 파일로 “묶는” 도구다. 묶기만 하면 용량은 줄지 않는다. 여기에 gzip, bzip2, xz 같은 압축을 함께 적용하면 용량까지 줄어든 .tar.gz, .tar.bz2, .tar.xz 파일이 된다. 그래서 리눅스에서는 “tar로 묶고 gzip으로 줄인다”는 흐름이 가장 흔하다.
| 확장자 | 압축 방식 | tar 옵션 | 특징 |
|---|---|---|---|
| .tar | 없음(묶기만) | (없음) | 가장 빠르지만 용량 그대로 |
| .tar.gz / .tgz | gzip | z | 속도와 압축률의 균형, 가장 많이 쓴다 |
| .tar.bz2 | bzip2 | j | gzip보다 작지만 느리다 |
| .tar.xz | xz | J | 압축률이 가장 높고 가장 느리다 |
tar 압축 명령어 기본 옵션
| 옵션 | 뜻 |
|---|---|
c | 새 아카이브 만들기(create) |
x | 풀기(extract) |
t | 내용 목록 보기(list) |
v | 처리 중인 파일 이름 출력(verbose) |
f | 아카이브 파일 이름 지정(file), 맨 뒤에 둔다 |
z | gzip으로 압축·해제 |
C | 풀 위치(디렉터리) 지정 |
옵션은 붙여서 쓰는 것이 일반적이다. 외우기 어렵다면 “만들 때 czvf, 풀 때 xzvf, 볼 때 tzvf”로 기억하면 된다. f 뒤에는 반드시 파일 이름이 와야 하므로 f를 옵션 맨 끝에 두는 습관을 들이자.
tar 압축 예제
# 디렉터리를 tar.gz로 압축
tar czvf backup.tar.gz /var/www/html
# 여러 파일과 디렉터리를 한 번에
tar czvf logs.tar.gz app.log error.log ./archive
# 날짜를 넣은 파일 이름으로 압축
tar czvf www_$(date +%Y%m%d).tar.gz /var/www/html
# 압축률이 더 높은 xz로 압축
tar cJvf backup.tar.xz /var/www/html특정 파일 제외하고 압축하기
캐시나 로그처럼 백업할 필요가 없는 파일은 –exclude로 뺀다. 여러 번 써서 여러 경로를 제외할 수 있다.
tar czvf www.tar.gz --exclude='*.log' --exclude='/var/www/html/cache' /var/www/htmltar.gz 해제 방법
# 현재 디렉터리에 풀기
tar xzvf backup.tar.gz
# 원하는 디렉터리에 풀기 (디렉터리가 미리 있어야 한다)
mkdir -p /tmp/restore
tar xzvf backup.tar.gz -C /tmp/restore
# 압축 방식 자동 인식 (최신 GNU tar)
tar xvf backup.tar.xz풀기 전에 내용부터 확인하기
모르는 파일을 바로 풀면 현재 디렉터리에 파일이 와르르 쏟아질 수 있다. 먼저 t 옵션으로 안에 무엇이 들었는지, 최상위 폴더가 있는지 확인하는 습관을 들이자.
tar tzvf backup.tar.gz | head -20특정 파일만 꺼내기
# 목록에 보이는 경로 그대로 지정
tar xzvf backup.tar.gz var/www/html/wp-config.phptar 압축 주의할 점
- 절대 경로: /var/www처럼 절대 경로로 압축해도 GNU tar는 앞의 /를 떼고 저장한다. 풀면 현재 위치 아래에 var/www가 생긴다.
- 권한 보존: root로 풀면 원래 소유자와 권한이 유지된다. 일반 사용자로 풀면 소유자가 바뀔 수 있다. 권한은 chmod와 chown 글을 참고하자.
- 디스크 용량: 큰 디렉터리를 압축하기 전에는 df -h로 남은 공간을 확인한다. 자세한 내용은 디스크 확인 방법에 있다.
- 덮어쓰기: 같은 이름의 파일이 있으면 경고 없이 덮어쓴다. 운영 중인 경로에 바로 풀지 말고 임시 디렉터리에 먼저 풀어 확인한다.
tar 옵션 전체는 GNU tar 공식 매뉴얼에서 볼 수 있다.
마무리
tar는 “czvf로 묶고, tzvf로 확인하고, xzvf로 푼다”만 기억해도 대부분의 상황을 해결할 수 있다. 이 명령을 스크립트로 만들어 자동화하는 방법은 리눅스 쉘 스크립트 기초에서, 압축한 백업을 다른 서버로 옮기는 방법은 rsync 백업과 동기화에서 이어서 다룬다.
첫 댓글을 남겨보세요