Linux 명령어: tar 사용법

Linux tar 사용법입니다. archive 생성, 목록 확인, 해제, gzip/xz 압축, 제외 패턴, listed-incremental 증분 백업과 복구 순서를 정리했습니다.

Linux 명령어: tar 사용법

tar는 여러 파일과 디렉터리를 하나의 archive 파일로 묶는 명령이다. tar 자체는 기본적으로 압축이 아니라 묶기 기능이며, 용량을 줄이려면 gzip, bzip2, xz 같은 압축 방식을 함께 사용한다.

실습 파일 준비

mkdir -p tar-lab/app/logs
cd tar-lab

printf 'config version 1\n' > app/config.txt
printf 'hello\n' > app/index.html
printf 'log line\n' > app/logs/app.log

archive 생성, 목록 확인, 해제

tar -cvf app.tar app/
tar -tvf app.tar

mkdir restore
tar -xvf app.tar -C restore
find restore -type f -print

옵션은 자주 붙여 쓴다. c는 create, t는 list, x는 extract, v는 verbose, f는 archive 파일명을 의미한다.

gzip, xz 압축과 해제

tar -czvf app.tar.gz app/
tar -tzvf app.tar.gz
tar -xzvf app.tar.gz -C restore

tar -cJvf app.tar.xz app/
tar -tJvf app.tar.xz
tar -xJvf app.tar.xz -C restore

z는 gzip, J는 xz다. 오래된 시스템이나 호환성이 중요하면 gzip을, 압축률이 더 중요하면 xz를 고려한다.

경로 보존과 안전한 해제

운영 서버에서 archive를 풀기 전에는 반드시 목록을 먼저 확인한다. 예상하지 못한 절대경로, 상위 디렉터리 이동(../), 소유권 변경이 포함되어 있으면 위험할 수 있다.

tar -tvf app.tar.gz | head
mkdir -p /tmp/tar-check
tar -xzvf app.tar.gz -C /tmp/tar-check

특정 파일 제외

tar -czvf app-clean.tar.gz app/ \
  --exclude='app/logs/*.log' \
  --exclude='app/tmp'

증분 백업

GNU tar의 --listed-incremental 옵션은 snapshot 파일을 기준으로 변경분을 기록한다. 전체 백업과 증분 백업을 같은 snapshot 파일 흐름으로 관리해야 하며, 복구할 때는 전체 백업을 먼저 풀고 증분 백업을 순서대로 적용한다.

mkdir -p backups

tar --listed-incremental=backups/app.snar \
  -czvf backups/app-full-$(date +%F).tar.gz app/

printf 'new log line\n' >> app/logs/app.log
printf 'config version 2\n' > app/config.txt

tar --listed-incremental=backups/app.snar \
  -czvf backups/app-inc-$(date +%F-%H%M).tar.gz app/

증분 백업 복구 순서

mkdir -p restore-incremental

tar -xzvf backups/app-full-2026-06-23.tar.gz -C restore-incremental
tar -xzvf backups/app-inc-2026-06-23-1200.tar.gz -C restore-incremental

운영 팁

  • 백업 파일명에는 날짜와 대상 서비스를 넣는다.
  • 복구 테스트를 하지 않은 백업은 신뢰하지 않는다.
  • DB 백업은 파일 복사보다 dump 또는 스냅샷 정책을 우선 검토한다.
  • 민감 파일이 포함되는 archive는 저장 위치와 권한을 별도로 관리한다.
BGM EVER