우분투 실전 명령어 | tar gzip 압축 백업과 복원
우분투 실전 명령어 | tar gzip 압축 백업과 복원
운영 중인 디렉터리를 한 번에 묶어서 백업하거나, 전달받은 압축 파일을 빠르게 복원해야 할 때 tar가 가장 먼저 쓰입니다. 아래 명령만 익혀두면 로그 보관, 배포 전 스냅샷, 장애 복구까지 대부분 처리할 수 있습니다.
언제 쓰는가
- 배포 전 현재 설정 파일/코드 디렉터리를 통째로 보관할 때
- 서버에서 수집한 로그를 기간별로 묶어서 전달할 때
- 다른 서버로 파일 트리를 그대로 옮길 때
바로 쓰는 명령어
# 1) 디렉터리 백업 (gzip 압축)
tar -czf app-backup-$(date +%F).tar.gz /srv/app
# 2) 압축 내용 확인 (복원 전 미리 점검)
tar -tzf app-backup-2026-02-19.tar.gz | head -n 20
# 3) 복원 (원래 경로 대신 /tmp/restore로 풀기)
mkdir -p /tmp/restore
tar -xzf app-backup-2026-02-19.tar.gz -C /tmp/restore
# 4) 특정 파일/패턴 제외하고 백업
sudo tar -czf etc-backup.tar.gz /etc \
--exclude='/etc/ssl/private/*' \
--exclude='*.swp'
# 5) 진행 상황을 보면서 백업 (파일명 출력)
tar -czvf logs-$(date +%F).tar.gz /var/log/nginx
핵심 옵션/패턴
-c: 새 아카이브 생성-x: 아카이브 해제-t: 아카이브 내부 목록 조회-z: gzip 압축 사용-f <파일명>: 아카이브 파일 지정-C <경로>: 해당 경로로 이동한 뒤 작업--exclude='패턴': 제외 규칙 지정
명령 출력 예시
$ tar -tzf app-backup-2026-02-19.tar.gz | head -n 5
srv/app/
srv/app/.env
srv/app/docker-compose.yml
srv/app/nginx/
srv/app/nginx/default.conf
$ tar -xzf app-backup-2026-02-19.tar.gz -C /tmp/restore
# (정상 종료 시 별도 에러 메시지 없음)
자주 하는 실수
- 상대 경로/절대 경로를 헷갈려서 복원 위치가 꼬임
-C를 항상 명시하고, 복원 전에 대상 디렉터리를 먼저 확인하는 습관이 안전합니다.
- 실행 중인 서비스의 데이터 디렉터리를 그대로 백업해 파일 일관성이 깨짐
- DB나 상태 파일은 서비스 정지/스냅샷 후 백업하거나, 서비스별 백업 도구를 병행하세요.
sudo없이 시스템 경로를 백업해 일부 파일이 누락됨/etc,/var/log같은 경로는 권한 오류 로그를 꼭 확인해야 합니다.
검증 방법
# 1) 아카이브 무결성 기본 점검 (목록 조회가 되면 최소 구조는 정상)
tar -tzf app-backup-2026-02-19.tar.gz >/dev/null && echo "OK"
# 2) 복원 후 파일 개수 비교
find /srv/app -type f | wc -l
find /tmp/restore/srv/app -type f | wc -l
# 3) 중요한 파일 존재 확인
test -f /tmp/restore/srv/app/docker-compose.yml && echo "compose found"
운영 팁
- 백업 파일명에 날짜를 넣고(
YYYY-MM-DD), 보관 기간 정책을 미리 정해 두면 운영이 깔끔해집니다. - 대용량 백업은
nice,ionice와 함께 돌려 서비스 영향도를 낮추세요. - 복구 훈련 없는 백업은 거의 무의미합니다. 월 1회는 샘플 복원을 실제로 해보는 걸 권장합니다.
출처
- GNU tar Manual
- Ubuntu Server Guide
- The Linux Documentation Project