tar — 파일 묶기와 풀기

Linux / 파일 및 디스크 관리 / tar.html

파일 및 디스크 관리원문등록 2026-10-18

💬 "tar 명령어"

tar는 여러 파일을 하나의 파일로 묶는 도구이고, -z를 붙이면 gzip 압축까지 함께 합니다. 리눅스 백업·배포의 표준입니다.

옵션 순서는 tar -czvf처럼 붙여 쓰는 경우가 많고, 풀 때는 -x로 바꿉니다.

  • 개념: c는 묶기(create), x는 풀기(extract), t는 목록(list)입니다. 이 세 글자가 핵심입니다.
  • 왼쪽 글자: 동작: c(만들기) / x(풀기) / t(목록 확인)
  • 오른쪽 글자: 옵션: z(gzip), v(진행 출력), f(파일 이름 지정, 보통 맨 뒤)
  • 경로: 풀 때는 -C로 대상 디렉터리를 지정하면 안전합니다.
  • 결과물: 확장자는 관례적으로 .tar.gz 또는 .tgz를 씁니다.

자주 쓰는 옵션

옵션설명
-c새 아카이브를 만듭니다
-x아카이브를 풉니다
-t풀지 않고 내용 목록만 봅니다
-zgzip으로 압축하거나 해제합니다
-C <dir>지정한 디렉터리에서 작업합니다

필수 명령어 조합 3가지

  • tar -czvf backup.tgz /var/www/html — 웹 루트를 통째로 압축 백업
  • tar -tzvf backup.tgz | head — 풀기 전에 내용과 경로를 먼저 확인
  • tar -xzvf release.tgz -C /opt/app — 지정한 디렉터리에 안전하게 풀기

💬 "야간 배치와 겹치지 않게 쓰는 팁 알려줘"

실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.

1단계 · 무엇을 담을지 정하고 묶기

백업 대상을 정한 뒤 한 파일로 묶습니다.

tar -czvf /backup/www-20261018.tgz /var/www/html

2단계 · 풀기 전에 목록 확인

엉뚱한 경로에 풀리는 사고를 막기 위해 내용을 먼저 봅니다.

tar -tzvf /backup/www-20261018.tgz | head -20

3단계 · 대상 디렉터리에 풀기

운영 중인 디렉터리에 바로 덮어쓰지 말고 별도 경로에 풀어 확인합니다.

tar -xzvf /backup/www-20261018.tgz -C /tmp/restore

실무에서는 이렇게 씁니다

1. 릴리스 파일 배포

상황 — 빌드 산출물이 담긴 release.tgz를 운영 서버 /opt/app 에 풀어야 합니다.

tar -xzvf /tmp/release.tgz -C /opt/app

결과 — 압축을 푸는 파일 목록이 stderr로 출력되며 /opt/app 아래에 배치됩니다.

포인트 — 운영 디렉터리는 -C로 명시하고, 가능하면 이전 버전을 .bak으로 옮긴 뒤 푸는 것이 안전합니다.

2. 설정만 부분 백업

상황 — nginx/php 설정만 따로 백업해 두고 싶습니다.

tar -czvf /backup/conf-20261018.tgz /etc/nginx /etc/php

결과 — 설정 파일들이 하나의 tgz로 묶여 보관됩니다. 절대 경로가 그대로 담기므로 복구 시 위치가 유지됩니다.

포인트 — 절대 경로로 묶으면 복구가 단순해집니다. 상대 경로 묶기는 풀 때 기준 경로를 꼭 확인합니다.

주의할 점

  • 풀 때 tar 폭탄(압축 해제 시 경로 탈출) 위험이 있습니다. 신뢰할 수 없는 파일은 -t로 목록을 먼저 확인합니다.
  • -C 없이 절대 경로로 묶은 파일은 어디서 풀어도 원래 위치에 덮어씁니다.
  • 운영 중인 디렉터리에 바로 풀지 말고 임시 경로에서 검증합니다.
  • SQLite/DB 파일처럼 쓰기 중인 파일은 일관성이 깨질 수 있어 별도 방법을 씁니다.

실제 실행 화면

먼저 목록을 확인한 뒤(위) 실제 백업 파일 크기를 확인한(아래) 결과입니다.

tar 명령어 실행 결과: 아카이브 목록과 백업 파일 크기

실제 운영 중인 서버

이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.