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 / 명령어 / journalctl - systemd 시스템·서비스 로그 조회

Linux / 명령어 / journalctl - systemd 시스템·서비스 로그 조회

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

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

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

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

Linux / 명령어 / uname - 커널과 시스템 아키텍처 확인

Linux / 명령어 / uname - 커널과 시스템 아키텍처 확인

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

Linux / 명령어 / install - 파일 복사와 권한 설정

Linux / 명령어 / install - 파일 복사와 권한 설정

Linux install 명령어로 파일을 복사하면서 권한, 소유자와 대상 디렉터리를 설정하는 방법을 설명합니다. cp와의 차이와 배포 스크립트에서의 활용법도 알아봅니다.

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux / 명령어 / rmdir - 빈 디렉터리 삭제

Linux rmdir 명령어로 빈 디렉터리와 비어 있는 상위 경로를 안전하게 삭제하는 방법을 설명합니다. rm -r과의 차이, 실패 원인과 스크립트 사용법도 알아봅니다.

Linux / 명령어 / dnf - RPM 계열에서 패키지·저장소 관리

Linux / 명령어 / dnf - RPM 계열에서 패키지·저장소 관리

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

Linux / 명령어 / fdisk - 디스크 파티션 표 확인과 편집

Linux / 명령어 / fdisk - 디스크 파티션 표 확인과 편집

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

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

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

Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

Linux / 명령어 / apropos - 설명 키워드로 명령어 검색

apropos 명령어로 이름을 모르는 리눅스 명령과 매뉴얼을 기능 키워드로 찾는 방법을 설명합니다. 정규 표현식, 모든 키워드 일치, 섹션 제한과 검색 결과가 없을 때의 해결 방법을 다룹니다.

Linux / 명령어 / more - 텍스트를 화면 단위로 나누어 보기

Linux / 명령어 / more - 텍스트를 화면 단위로 나누어 보기

Linux more 명령어로 긴 텍스트를 화면 단위로 읽는 방법을 설명합니다. 이동과 검색 키, 파이프 사용법, less와의 차이를 함께 정리합니다.