Linux / 명령어 / tar - 여러 파일을 묶고 압축 아카이브 풀기

tar는 여러 파일과 디렉터리를 하나의 아카이브로 묶거나 풀어 줍니다. .tar 자체는 압축 형식이 아니며, gzip·bzip2·xz와 결합해 압축 아카이브를 만들 수 있습니다.

tar 명령어란?

아카이브는 파일의 이름과 디렉터리 구조를 포함하는 묶음입니다. GNU tar에서 -c는 생성, -t는 목록 확인, -x는 추출이고 -f 뒤에는 아카이브 파일명을 둡니다. -z는 gzip, -j는 bzip2, -J는 xz 압축과 연결합니다. 추출 전 목록과 목적지를 확인하면 예상치 못한 경로에 파일이 풀리는 일을 줄일 수 있습니다.

기본 문법

tar [동작] [옵션] -f 아카이브 [파일 또는 디렉터리 ...]

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man tar으로 현재 시스템의 설명을 확인하세요.

사용 예제

gzip 압축 아카이브 만들기

project/의 내용을 디렉터리 구조와 함께 묶습니다. 기존 project.tar.gz가 있으면 덮어쓸 수 있습니다.

tar -czf project.tar.gz project/

풀기 전에 목록 확인

압축을 풀 위치와 파일명을 판단하기 위해 먼저 구성원을 나열합니다.

tar -tzf project.tar.gz

지정한 디렉터리에 풀기

restore/를 먼저 만든 뒤 그 안에 풉니다. 기존 파일과 겹치지 않는지 확인하세요.

mkdir -p restore
tar -xzf project.tar.gz -C restore/

아카이브 내부 목록 확인하기

tar는 여러 파일을 하나의 아카이브로 묶습니다. 다음 예제는 작은 파일을 만든 뒤 묶고, 압축 해제 없이 구성원을 조회합니다.

printf 'hello\n' > note.txt
tar -cf bundle.tar note.txt
tar -tf bundle.tar

예시 출력:

note.txt

-c는 생성, -t는 목록, -f는 아카이브 파일 지정입니다. .tar 자체는 압축을 뜻하지 않으며 -z·-J 등으로 별도 압축을 결합할 수 있습니다. 신뢰할 수 없는 아카이브를 풀기 전에는 내부 경로에 절대 경로나 상위 디렉터리 이동이 있는지 확인하고 별도 작업 디렉터리에 추출하세요.

주요 옵션과 형식

옵션·형식 설명
-c / -t / -x 생성·목록·추출 동작 중 하나를 선택합니다.
-f 파일 읽거나 쓸 아카이브 파일을 지정합니다.
-z / -j / -J gzip·bzip2·xz 압축을 각각 사용합니다.
-C 디렉터리 작업 기준 디렉터리를 변경합니다.
-v 처리하는 파일명을 표시합니다.

사용할 때 주의할 점

신뢰할 수 없는 아카이브를 관리자 권한으로 바로 풀지 마세요. 추출 대상의 파일명, 심볼릭 링크와 기존 파일 덮어쓰기 가능성을 먼저 살피고 격리된 빈 디렉터리를 사용하세요. tar -cf로 기존 아카이브를 다시 만들면 내용을 추가하는 것이 아니라 아카이브를 새로 쓰므로 기존 내용이 사라질 수 있습니다.

자주 묻는 질문

tar와 gzip의 차이는 무엇인가요?

tar는 여러 파일과 경로를 한 묶음으로 만들고, gzip은 데이터 스트림을 압축합니다. tar -czf는 두 기능을 결합한 명령입니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 tar 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

Linux / 명령어 / nc - TCP·UDP 연결과 포트 점검

Linux nc 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / help - 셸 내장 명령어 도움말 확인

Linux / 명령어 / help - 셸 내장 명령어 도움말 확인

Bash help 명령어로 셸 내장 명령과 문법의 도움말을 확인하는 방법을 설명합니다. 출력 형식, 패턴 검색, type·man·--help와의 차이 및 스크립트 활용법을 정리합니다.

Linux / 리눅스 배포판 종류와 버전 확인하는 방법

Linux / 리눅스 배포판 종류와 버전 확인하는 방법

리눅스 배포판 종류와 버전을 /etc/os-release, hostnamectl, uname 명령으로 확인하는 방법을 설명합니다. 배포판 계열과 커널 버전의 차이, 스크립트 활용법과 컨테이너·WSL 환경의 주의점도 함께 정리합니다.

Linux / 명령어 / grep - 텍스트에서 원하는 문자열 검색

Linux / 명령어 / grep - 텍스트에서 원하는 문자열 검색

Linux grep 명령어로 파일과 명령 출력에서 문자열·정규 표현식을 검색하는 방법을 설명합니다. -F, -E, -r, 문맥 출력, 종료 상태와 로그 검색 예제를 정리합니다.

Linux / 명령어 / command - 명령어 검색과 별칭 우회 실행

Linux / 명령어 / command - 명령어 검색과 별칭 우회 실행

셸 command 명령어로 함수 검색을 건너뛰어 원래 명령을 실행하고, command -v로 명령 존재 여부를 확인하는 방법을 설명합니다. -p·-V 옵션과 builtin·exec·env의 차이도 정리합니다.

Linux / 명령어 / man - 명령어 매뉴얼 확인

Linux / 명령어 / man - 명령어 매뉴얼 확인

man 명령어로 리눅스 매뉴얼을 읽고 검색하는 방법을 설명합니다. 매뉴얼 섹션, 화면 이동, 키워드 검색, 셸 내장 명령 확인과 문서가 없을 때의 해결 방법을 함께 정리합니다.

Linux / 명령어 / apt-get - APT 패키지 작업을 스크립트와 명령행에서 실행

Linux / 명령어 / apt-get - APT 패키지 작업을 스크립트와 명령행에서 실행

Linux apt-get 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / zypper - openSUSE·SUSE에서 패키지와 저장소 관리

Linux / 명령어 / zypper - openSUSE·SUSE에서 패키지와 저장소 관리

Linux zypper 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux / 명령어 / free - 메모리와 스왑 사용량 확인

Linux free 명령어의 total, used, free, buff/cache, available과 Swap 항목을 설명합니다. 메모리 부족을 판단할 때 함께 확인할 지표와 주의점도 정리합니다.

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux / 명령어 / unxz - xz 압축 파일 풀기

Linux unxz 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.