Tar Gzip 아카이브 (.tar.gz)
POSIX.1 표준Tar Gzip(.tar.gz, .tgz라고도 함)은 Linux와 오픈 소스 생태계에서 표준으로 쓰이는 소프트웨어 배포용 아카이브 형식입니다. Unix 기본 TAR 패키징과 범용 Gzip 압축을 결합합니다.
검사 및 메타데이터
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 TAR.GZ 파일을 식별합니다:
바이트 단위 헤더 시그니처 (매직 바이트)
운영 체제와 파일 분석기는 파일 선두의 바이너리 바이트 시퀀스를 검사하여 TAR.GZ 파일을 식별합니다:
16진수 시그니처 (오프셋 0):
1F 8B 08ASCII 표현: ..\x08
표준화: POSIX.1 ustar (RFC 1952 gzip 래핑 형식)
기술 사양
| 컨테이너 아키텍처 | RFC 1952 Gzip 압축 컨테이너 안에 담긴 POSIX ustar 또는 GNU tar 아카이브 스트림 |
| 압축 | 2단계 패키징: TAR 직렬화 후 DEFLATE 압축 |
| 바이트 엔디안 | 8진수 POSIX tar 블록을 감싸는 리틀 엔디안 Gzip 엔벌로프 |
| 색 공간 | 해당 없음(아카이브 컨테이너) |
| 채널 및 구조 | 여러 파일로 이루어진 Unix 디렉터리 트리, 심볼릭 링크, 파일 소유권 및 권한 비트 |
| 최대 크기 | 크기 제한 없는 스트리밍 아카이브 |
| 투명도 | 파일 시스템 구조와 데이터를 비트 단위로 정확하게 보존하는 100% 무손실 형식 |
| 스트리밍 및 프로그레시브 | 처음부터 끝까지 파이프로 스트리밍 가능: 한 번의 처리 과정에서 압축 해제와 파일 추출을 동시에 수행 |
기술 비교 매트릭스: TAR.GZ 대 경쟁사
| 기술적 속성 | TAR.GZ (현재) | ZIP | 7Z | TAR.BZ2 |
|---|---|---|---|---|
| 유닉스 권한 | 100% 네이티브 POSIX 보존 | 제한적 / 종종 손실됨 | 기본 속성 보존 | 100% 네이티브 POSIX 보존 |
| 압축률 | 보통 (Gzip DEFLATE) | 보통 (ZIP DEFLATE) | 매우 높음 (LZMA2) | 높음 (Bzip2 BWT) |
| 압축 해제 속도 | 빠름 (~300 MB/s) | 빠름 (~300 MB/s) | 보통 (~100 MB/s) | 느림 (~40 MB/s) |
| 리눅스 생태계 표준 | 범용 오픈소스 기본값 | 소비자 데스크톱 기본값 | 윈도우 마니아 선호 | 레거시 리눅스 소스 배포판 |
일반적인 손상 모드 및 헥스 복구 가이드
명령줄에 'gzip: stdin: invalid compressed data--format violated' 메시지가 표시됨.
근본 원인: Gzip 엔벨로프의 손상된 바이트 또는 잘린 다운로드.
복구: File2File.app 아카이브 추출기 또는 tar -izxf broken.tar.gz 명령으로 일부 데이터를 복구해 보십시오.
보안 분석 및 파서 공격 벡터
TAR.GZ 아카이브는 주의 없이 추출할 경우 압축 폭탄과 디렉터리 순회 공격의 위험을 모두 내포하고 있습니다.
알려진 공격 벡터
- 아주 작은 .tar.gz 파일이 테라바이트 규모의 0으로 팽창하는 압축 폭탄 스타일의 증폭.
- 권한이 있는 파일을 덮어쓰는 디렉터리 순회(예: '../../root/.ssh/authorized_keys').
- 루트(root) 권한으로 추출하는 동안 악성 디바이스 노드 생성.
방어적 모범 사례: 권한이 없는 사용자로 아카이브를 추출하고 디렉터리 순회 공격을 막도록 모든 대상 파일 경로를 정화하십시오.
역사적 배경 및 주요 이력
주요 장점
- 오픈 소스 소스 코드 릴리스, Linux 패키지 및 Docker 컨테이너 레이어의 확고한 표준
- POSIX 권한과 심볼릭 링크를 온전히 보존하면서 Gzip으로 빠르고 안정적으로 압축
- 완전한 스트리밍 지원: 임시 파일을 디스크에 쓰지 않고 네트워크 파이프를 통해 다운로드, 압축 해제 및 풀기 가능
기술적 제한 사항 및 단점
- 단일 파일을 추출하려면 해당 파일의 위치까지 전체 아카이브를 압축 해제해야 함.
- .tar.xz나 .tar.zst 같은 최신 대안에 비해 압축률이 낮음.
- 오래된 Windows에서는 널리 지원되는 ZIP 형식보다 사용하기 불편할 수 있습니다.
흥미로운 기술적 상식
- 8.3 파일 이름 제한이 있던 MS-DOS 시스템에서는 '.tar.gz'가 '.tgz'로 단축되었습니다.
- 'npm install'을 실행할 때마다 npm은 백그라운드에서 .tgz (tar.gz) 패키지를 다운로드하고 추출합니다.
- 리눅스 사용자들은 'eXtract Ze File'이라는 연상기억법(tar -xzf file.tar.gz)으로 tar.gz 파일을 추출하는 명령어를 유명하게 기억합니다.
자주 묻는 기술 질문
.tar.gz와 .zip은 어떻게 다릅니까?
.zip은 각 파일을 개별적으로 압축하며 끝에 중앙 디렉터리가 있습니다. .tar.gz는 모든 파일을 먼저 단일 스트림으로 결합하여 전체 Linux 권한과 심볼릭 링크를 보존합니다.
.tgz는 .tar.gz와 같습니까?
예. .tgz는 .tar.gz를 3글자로 줄인 확장자입니다. 원래 DOS처럼 8.3 형식의 짧은 파일 이름 제한이 있는 운영체제에서 사용하도록 만들어졌습니다.
Windows에서 .tar.gz 파일을 어떻게 추출할 수 있습니까?
WinRAR이나 7-Zip을 설치할 필요 없이, 웹 브라우저에서 File2File.app을 사용하여 .tar.gz 파일을 직접 추출할 수 있습니다.