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.logarchive 생성, 목록 확인, 해제
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 restorez는 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는 저장 위치와 권한을 별도로 관리한다.