우분투 실전 명령어 | 압축/아카이브(tar, gzip, xz) 백업 기본 패턴
언제 쓰는가
서버 로그를 백업하거나, 배포 전에 설정 파일을 묶어서 전달할 때 가장 자주 쓰는 조합이 tar + gzip/xz입니다. 디렉터리 구조를 유지한 채로 압축할 수 있어서 복원도 깔끔합니다. 용량을 최대한 줄일지, 압축/해제 속도를 우선할지에 따라 gzip과 xz를 나눠 쓰면 됩니다.
바로 쓰는 명령어
# logs 디렉터리를 gzip으로 압축
sudo tar -czf logs-$(date +%F).tar.gz /var/log/myapp
# 현재 디렉터리의 conf 폴더를 xz로 고압축
tar -cJf conf-backup-$(date +%F).tar.xz ./conf
# 압축 해제
tar -xzf logs-2026-02-18.tar.gz
tar -xJf conf-backup-2026-02-18.tar.xz
# 압축 파일 내부 목록만 확인
tar -tzf logs-2026-02-18.tar.gz | head
# 특정 경로에 해제
mkdir -p /tmp/restore-test
tar -xzf logs-2026-02-18.tar.gz -C /tmp/restore-test
# 진행 상황을 보면서 압축/해제
tar -cvzf app.tar.gz ./app
tar -xvzf app.tar.gz -C /tmp/restore-test
자주 하는 실수
-f뒤 파일명을 빼먹는 실수tar -cz app.tar.gz ./app처럼 쓰면 옵션 해석이 꼬입니다.-f다음에는 아카이브 파일명이 바로 와야 합니다.
- 절대경로를 그대로 묶어서 복원 경로가 꼬이는 문제
/var/log/...를 그대로 묶으면 복원 시 의도치 않게 절대경로 기준으로 보일 수 있습니다. 배포/이관용이면-C를 활용해 상대경로 구조로 묶는 편이 안전합니다.
- gzip/xz 옵션 혼동
.tar.gz는-z,.tar.xz는-J를 써야 합니다. 확장자와 옵션이 다르면 해제할 때 바로 에러가 납니다.
검증 방법
# 파일 형식 확인
file logs-2026-02-18.tar.gz
file conf-backup-2026-02-18.tar.xz
# 무결성 1차 확인
tar -tzf logs-2026-02-18.tar.gz >/dev/null && echo "OK: gzip archive"
tar -tJf conf-backup-2026-02-18.tar.xz >/dev/null && echo "OK: xz archive"
# 해제 후 주요 파일 존재 확인
ls -al /tmp/restore-test | head
실행 결과 예시
$ tar -czf logs-2026-02-18.tar.gz /var/log/myapp
$ ls -lh logs-2026-02-18.tar.gz
-rw-r--r-- 1 root wheel 42M Feb 18 20:31 logs-2026-02-18.tar.gz
$ tar -tzf logs-2026-02-18.tar.gz | head
var/log/myapp/
var/log/myapp/app.log
var/log/myapp/error.log
var/log/myapp/access.log
$ tar -xzf logs-2026-02-18.tar.gz -C /tmp/restore-test
$ ls -al /tmp/restore-test/var/log/myapp | head
total 128
-rw-r--r-- 1 root wheel 85321 Feb 18 20:27 app.log
-rw-r--r-- 1 root wheel 9120 Feb 18 20:27 error.log
-rw-r--r-- 1 root wheel 24111 Feb 18 20:27 access.log
출처
- GNU tar Manual
- Ubuntu Manpages
- Debian Wiki