우분투 실전 명령어 | 압축/아카이브(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