tar 명령어 사용법

여러 파일과 디렉터리를 하나의 아카이브로 묶고 푸는 명령어입니다.

파일·디렉터리 관리연결 실습 문제 11개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

tar [옵션] [아카이브파일] [대상파일...]

tar는 여러 파일과 디렉터리를 하나의 아카이브 파일로 묶거나, 묶인 아카이브를 다시 풀어주는 명령어입니다. 원래는 테이프 장치에 백업하기 위해 만들어졌으며(tape archive), 현재는 디렉터리 단위 백업과 배포용 파일 묶음을 만드는 데 널리 쓰입니다.

tar 자체는 압축 기능이 없고 파일을 하나로 이어 붙이는 역할만 합니다. 실제 압축은 gzip(-z), bzip2(-j), xz(-J) 같은 외부 압축기가 담당하며, tar 옵션으로 이를 함께 호출해 .tar.gz, .tar.bz2, .tar.xz 형식을 만듭니다. 소유자·권한·타임스탬프 같은 메타데이터가 보존되므로(소유자 복원은 root 권한이 필요) 백업과 이관 작업에 적합합니다.

실무에서는 로그 디렉터리 백업, 설정 파일 묶음 보관, 증분 백업(--listed-incremental), 아카이브에서 특정 경로만 선택해 복구하는 작업에 사용합니다. 리눅스마스터·RHCSA·LPIC 시험에서도 c/x/t/v/f/z/j 옵션 조합과 -C 옵션의 의미가 자주 출제됩니다. Rocky Linux 8에는 GNU tar 1.30이 포함되어 있습니다.

자주 쓰는 옵션

옵션의미
-c새 아카이브를 생성tar -cf backup.tar logs
-x아카이브에서 파일을 추출tar -xf backup.tar
-t아카이브 내용 목록만 확인tar -tf backup.tar
-f아카이브 파일 이름 지정(파일명이 바로 뒤에 와야 함)tar -cf archive.tar dir
-zgzip으로 압축/해제 (.tar.gz)tar -czf logs.tar.gz logs
-v처리 중인 파일 이름을 출력tar -czvf logs.tar.gz logs
-jbzip2로 압축/해제 (.tar.bz2)tar -xjf temp.tar.bz2
-Jxz로 압축/해제 (.tar.xz)tar -cJf src.tar.xz src
-C 디렉터리지정한 디렉터리로 이동한 뒤 묶거나 풀기tar -xzf backup.tar.gz -C /tmp/demo/restore
--listed-incremental=파일스냅샷 파일을 사용해 증분 백업 수행tar -czf inc-2.tar.gz --listed-incremental=inc.snar data

실무 예시

디렉터리를 tar.gz로 압축

준비: mkdir -p /tmp/demo/logs; echo app > /tmp/demo/logs/app.log; echo err > /tmp/demo/logs/error.log

$ cd /tmp/demo && tar -czvf logs_backup.tar.gz logs
logs/
logs/app.log
logs/error.log

logs 디렉터리 전체를 gzip 압축 아카이브로 묶습니다. -v를 지정하면 아카이브에 포함되는 경로가 출력됩니다.

아카이브 내용 확인

$ tar -tzvf /tmp/demo/logs_backup.tar.gz
drwxr-xr-x root/root         0 2026-09-16 11:27 logs/
-rw-r--r-- root/root         4 2026-09-16 11:27 logs/app.log
-rw-r--r-- root/root         4 2026-09-16 11:27 logs/error.log

압축을 풀지 않고 아카이브 안의 경로를 권한·소유자·크기·시각과 함께 확인합니다. 출력되는 날짜와 시각은 원본 파일의 타임스탬프이므로 실습 시점에 따라 달라집니다.

지정한 디렉터리에 압축 풀기

준비: mkdir -p /tmp/demo/restore

$ tar -xzvf /tmp/demo/logs_backup.tar.gz -C /tmp/demo/restore
logs/
logs/app.log
logs/error.log

-C로 대상 디렉터리를 지정해 현재 디렉터리가 아닌 별도 위치에 풀어냅니다. 대상 디렉터리는 미리 만들어 두어야 합니다.

디렉터리와 파일을 함께 백업

준비: mkdir -p /tmp/demo/backup/logs /tmp/demo/backup/config; echo a > /tmp/demo/backup/logs/app.log; echo KEY=1 > /tmp/demo/backup/config/app.env

$ cd /tmp/demo/backup && tar -czvf backup_2026_04.tar.gz logs config/app.env
logs/
logs/app.log
config/app.env

여러 대상을 한 아카이브에 담습니다. cd 후 상대 경로로 지정했기 때문에 아카이브 내부 경로가 logs/, config/app.env 형태로 저장됩니다. 파일을 개별 지정했으므로 config 디렉터리 항목 자체는 목록에 나오지 않습니다.

아카이브에서 특정 경로만 복구

준비: mkdir -p /tmp/demo/recovered

$ tar -xzvf /tmp/demo/backup/backup_2026_04.tar.gz -C /tmp/demo/recovered config/app.env
config/app.env

아카이브 전체가 아니라 지정한 경로만 추출합니다. 지정하는 경로는 -t로 확인한 아카이브 내부 이름과 정확히 같아야 합니다.

주의할 점

  • -f 옵션 뒤에는 아카이브 파일 이름이 바로 와야 합니다. tar -cfz logs.tar.gz logs 처럼 쓰면 tar가 'z'를 아카이브 이름으로 해석해 의도하지 않은 파일이 만들어집니다.
  • 절대 경로로 묶으면 tar가 맨 앞의 /를 제거한다는 경고를 출력하고 아카이브 내부 경로가 달라집니다. cd 후 상대 경로로 묶는 방식이 예측하기 쉽습니다.
  • 추출 시 같은 이름의 기존 파일은 기본적으로 덮어써집니다. 복구 전에 -t로 내용을 확인하고, 운영 중인 경로가 아닌 별도 디렉터리에 -C로 먼저 풀어 확인하세요.
  • 압축 형식과 옵션이 맞지 않으면 실패합니다. 확장자만 믿지 말고 file 명령으로 gzip/bzip2/xz 여부를 확인하세요.
  • root로 아카이브를 풀면 아카이브에 기록된 소유자·권한이 그대로 복원됩니다. /etc 등 시스템 경로에 바로 풀지 말고, 별도 디렉터리에 푼 뒤 필요한 파일만 옮기세요.

이 명령어로 풀 수 있는 실습 문제

브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.

관련 명령어

마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.