압축 파일이 갑자기 “손상됨”, “지원하지 않는 형식”, “압축 해제 실패” 같은 메시지를 뿜어낼 때가 있죠.
그럴 때 가장 먼저 의심해 볼 지점이 바로 압축 포맷 헤더(header)와 시그니처(signature)입니다.
이 글은 “왜 헤더가 깨지면 풀리지 않는지”, “어떤 구조가 실제 오류를 만들기 쉬운지”, “어디부터 점검하면 빠른지”를 순서대로 정리해 드릴게요.
너무 어렵게만 느껴지지 않도록, 핵심만 쏙쏙 짚어서 같이 보겠습니다.
목차
압축 포맷 헤더가 하는 일과 기본 구성
“헤더(header)”는 쉽게 말해, 압축 파일의 설명서이자 목차예요.
압축 해제 프로그램은 파일을 열자마자 헤더를 읽고 “이게 무슨 포맷인지”, “암호화/분할/압축 방식이 뭔지”, “파일 목록이 어디에 있는지”를 결정합니다.
그래서 헤더가 조금만 어긋나도, 실제 데이터가 멀쩡해도 프로그램은 처음부터 해석을 포기하거나, 엉뚱한 위치를 읽다가 “손상됨”으로 결론 내리기 쉽습니다.
특히 컨테이너 형식(예: ZIP)은 로컬 헤더 + 중앙 디렉터리(목록) + 끝 레코드처럼 여러 구조가 맞물려 있어서, 한 군데가 틀어지면 연쇄적으로 오류가 납니다.
| 구성 요소 | 무슨 일을 하나요? | 깨지면 흔한 증상 |
|---|---|---|
| 시그니처 | 포맷을 판별하는 “매직 넘버(첫 바이트 패턴)” | 지원하지 않는 형식 / 파일 형식 불명 |
| 버전/플래그 | 필요 버전, 옵션(암호화/데이터 디스크립터 등) 표시 | 암호화로 오인 / “데이터 오류” |
| 파일 목록 메타 | 파일명, 길이, 압축 방식, 오프셋(어디에 데이터가 있는지) | 목록이 비어 보임 / 일부만 보임 |
| 무결성 정보 | CRC/해시, 사이즈 값으로 데이터 검증 | CRC 오류 / “손상된 파일” |
| 엔드 레코드 | 목록의 끝, 중앙 디렉터리 위치/길이 등 “전체 구조의 마침표” | 압축 해제 프로그램이 끝을 못 찾아 실패 |
핵심 포인트:
압축 해제 오류는 “데이터가 망가졌다”라기보다 헤더가 가리키는 위치/길이/옵션 정보가 틀어진 경우가 정말 많습니다.
대표 포맷별 시그니처와 “첫 바이트” 판별
압축이 안 풀릴 때, 의외로 빠른 진단 방법이 하나 있어요.
바로 파일의 맨 앞(혹은 특정 위치)에 있는 시그니처(매직 넘버)를 확인하는 겁니다.
예를 들어 ZIP은 흔히 “PK”로 시작하고, GZIP은 1F 8B 같은 패턴이 나옵니다.
그런데 다운로드 중 끊기거나, 메일/메신저가 파일을 변형하거나, 확장자만 바꿔치기 된 경우에는
확장자는 .zip인데 내용은 전혀 다른 포맷인 상황도 생겨요. 이런 경우 헤더 분석이 거의 정답에 가깝습니다.
| 포맷 | 대표 시그니처(예시) | 헤더 관점 특징 | 자주 나는 오류 포인트 |
|---|---|---|---|
| ZIP | PK.. (로컬 헤더/중앙 디렉터리 등) | 목록(중앙 디렉터리)과 끝 레코드가 구조의 핵심 | 끝 레코드 탐색 실패, 오프셋 불일치 |
| 7z | 7z 헤더 패턴(고정 바이트) | 헤더 자체가 비교적 단단하지만 손상 시 복구 난이도 상승 | 헤더 CRC/구조 파손으로 즉시 실패 |
| RAR | RAR 헤더 패턴(버전별 차이) | 분할/복구 레코드가 섞이면 해석 규칙이 복잡해짐 | 분할 파트 누락, 복구 레코드 불일치 |
| GZIP | 1F 8B | 단일 스트림 성격이 강해 “컨테이너 목록” 개념이 약함 | 스트림 중간 손상 시 이후 구간 복원 어려움 |
TIP: 확장자만 보고 “ZIP이겠지”라고 단정하지 말고, 시그니처로 1차 확인하면 원인 범위를 크게 줄일 수 있어요.
헤더/메타데이터가 깨지는 대표 원인

“왜 하필 헤더가 깨질까?”를 생각해 보면 의외로 현실적인 이유가 많습니다.
헤더는 파일의 시작 부분(또는 끝 레코드/목록처럼 끝부분)에 몰려 있는 경우가 많아서, 전송 오류나 잘림(truncation)에 특히 취약하거든요.
아래 원인들은 압축 데이터 자체보다 헤더의 길이/오프셋/무결성 값을 망가뜨려서 압축 해제를 막는 대표 케이스입니다.
- 부분 다운로드/부분 복사다운로드가 99%에서 멈췄는데도 파일이 저장되는 경우가 있어요.
ZIP은 특히 “끝 레코드(마지막 구조)”가 없으면 프로그램이 전체를 끝까지 못 읽고 실패합니다. - 전송 과정의 변형(메일/메신저/웹 업로더)일부 서비스는 파일을 스캔/압축/재패키징하거나, 인코딩을 바꿔 저장하기도 합니다.
그 결과, 시그니처가 바뀌거나 중앙 디렉터리 오프셋이 어긋나 “지원하지 않는 형식”이 뜰 수 있어요. - 분할 압축에서 파트 누락분할 파일은 “전체 조각이 다 있어야” 헤더가 의미를 가집니다.
중간 파트 하나만 빠져도 CRC/사이즈 검증이 무너지고, 목록을 따라가다 중간에서 끊깁니다. - 파일 시스템/저장 장치 문제불안정한 USB, 불량 섹터, 강제 종료로 인해 특정 구간이 0으로 덮이거나 깨질 수 있습니다.
특히 헤더 영역에 이런 손상이 생기면 “전체가 손상”으로 판단되기 쉽습니다. - 문자 인코딩/파일명 확장 필드 꼬임파일명에 특수문자/다국어가 들어가면, 일부 도구가 헤더의 문자열 처리에서 실수할 때가 있어요.
목록은 보이는데 추출이 안 되거나, 파일명이 깨진 상태로 실패하는 경우가 여기에 가깝습니다.
주의: “암호가 걸려서 안 풀림”처럼 보이는데 실제로는 헤더 플래그가 잘못 읽힌 착시일 수 있습니다.
특히 포맷 오인(확장자만 바뀐 파일)과 섞이면 진단이 더 꼬이니, 먼저 시그니처부터 확인해 주세요.
실전 진단 체크리스트
이제부터는 “내 파일이 왜 안 풀리는지”를 빠르게 좁혀볼 차례예요.
아래 체크리스트는 복잡해 보이지만, 위에서부터 차근차근 하면 원인의 80%는 중간에 걸러집니다.
하나라도 걸리는 항목이 있다면, 그 지점이 바로 핵심 원인일 가능성이 높아요.
체크리스트
1) 파일 크기가 “받던 중 멈춘 느낌”으로 이상하게 작지 않은가?
2) 확장자(.zip/.7z/.rar)가 실제 내용(시그니처)과 일치하는가?
3) ZIP이라면 “끝 레코드”가 존재하는지(파일 끝부분이 잘렸는지) 의심되는가?
4) 목록은 보이는데 추출만 실패하는가? (CRC/오프셋/데이터 구간 손상 가능)
5) 분할 파일이라면 모든 파트가 빠짐없이 있는가? 이름/순서가 정확한가?
6) 다른 압축 해제 프로그램에서도 동일하게 실패하는가? (도구 호환성 vs 실제 손상 구분)
7) 같은 파일을 다른 저장장치로 복사해도 문제가 재현되는가? (저장 장치 문제 가능)
| 증상 | 헤더 관점에서의 의미 | 우선 대응 |
|---|---|---|
| 형식을 인식 못함 | 시그니처 불일치, 앞부분 손상, 확장자만 변경 | 시그니처 확인 → 올바른 도구/확장자 재검토 |
| 목록은 보이는데 추출 실패 | 데이터 구간 CRC/사이즈 불일치 또는 오프셋 문제 | 다른 도구로 추출 시도, “무시하고 복구” 옵션 검토 |
| 끝에서 에러 | 끝 레코드/디렉터리 손상 또는 파일 잘림 | 원본 재다운로드/재전송이 최우선 |
복구/우회 전략: 헤더 기반으로 가능한 것들
진단에서 “헤더 쪽이 의심된다”까지 왔으면, 이제는 복구(또는 우회) 단계예요.
여기서 중요한 건 딱 하나입니다.
헤더가 망가졌을 때 내가 할 수 있는 일은 ‘정확히 무엇을 잃었는지’에 따라 달라진다는 점이에요.
어떤 경우에는 원본을 다시 받는 게 유일한 해답이지만, 또 어떤 경우에는 “목록만 깨진 ZIP”처럼
일부 데이터는 건질 수 있는 길이 남아 있기도 합니다.
- 원본 재확보가 가능한지 먼저 확인다운로드/전송 오류가 의심되면, 어떤 복구보다 다시 받기가 가장 확실합니다.
특히 ZIP의 끝 레코드가 사라진 경우(잘림)는, “원본 재확보”가 시간 대비 성공률이 압도적으로 높아요. - 압축 해제 도구를 바꿔서 읽기어떤 도구는 헤더 검증이 엄격하고, 어떤 도구는 손상을 “가능한 만큼 무시”하고 추출하려고 합니다.
같은 파일인데도 A 도구에서는 실패, B 도구에서는 일부 파일이라도 건지는 경우가 생겨요. - 부분 추출(가능한 파일만)목록이 정상인데 특정 파일만 CRC 오류가 난다면, 전체가 아니라 그 파일 데이터 구간만 손상일 수 있어요.
이때는 “정상 파일 먼저 추출”을 목표로 두면 만족도가 확 올라갑니다. - 분할 압축은 ‘모든 파트 + 정확한 이름’이 전제분할 파일에서 하나라도 빠지면 헤더가 가리키는 데이터가 중간에서 끊기므로 복구가 급격히 어려워집니다.
우선 파트 누락 여부부터 점검하고, 순서가 뒤엉킨 경우 “이름 규칙”을 맞춰 정렬하는 게 첫걸음이에요. - 헤더 손상 유형을 “앞/끝/목록”으로 나눠 생각앞부분(시그니처/초기 헤더)이 깨지면 포맷 인식부터 실패합니다.
끝부분(끝 레코드/중앙 디렉터리)이 깨지면 “목록을 못 찾는” 문제가 생깁니다.
목록이 깨졌다면 데이터가 있어도 접근 경로가 없어지는 셈이라, 도구별 복구 기능이 갈립니다.
작은 결론:
“복구”는 결국 헤더가 가리키는 구조(오프셋/길이/목록)를 다시 맞추거나, 맞추지 못하면 가능한 범위만 우회 추출하는 전략입니다.
댓글로 오류 메시지와 포맷(확장자)만 남겨주셔도, 어떤 유형인지 같이 추적해볼 수 있어요.
FAQ (자주 묻는 질문)
확장자가 zip인데 “지원하지 않는 형식”이 떠요. 왜 그런가요?
확장자는 단지 이름일 뿐이라, 실제 내용(시그니처)이 ZIP이 아닐 수 있습니다.
전송 과정에서 포맷이 바뀌었거나, 파일이 앞부분부터 손상되어 시그니처를 읽지 못하는 경우도 많아요.
이런 상황은 시그니처 확인이 가장 빠른 첫 단계입니다.
목록은 보이는데 특정 파일만 CRC 오류가 납니다.
대개 그 파일의 데이터 구간만 깨졌거나(부분 손상), 헤더에 기록된 CRC/사이즈와 실제가 불일치하는 상황입니다.
이럴 때는 “정상 파일 먼저 추출”로 목표를 바꾸면 성과가 좋아요.
같은 파일을 다른 도구로 풀어보면, 손상 허용 정책 차이로 일부라도 건질 수 있습니다.
압축 해제할 때 끝부분에서만 오류가 나요.
ZIP 같은 포맷은 끝부분에 “구조의 마무리 정보(끝 레코드/목록 위치)”가 있어요.
파일이 잘렸거나 끝부분이 손상되면 프로그램이 전체 구조를 완성하지 못해서 마지막에 실패하는 형태가 됩니다.
가능하다면 원본을 다시 받는 것이 가장 확실한 해결책입니다.
분할 압축 파일 중 하나가 없는데, 남은 것만으로 복구할 수 있나요?
분할 압축은 “전체 조각이 모두 있어야” 헤더가 의미를 가지는 경우가 대부분입니다.
중간 파트가 비어 있으면 데이터 스트림이 끊겨서, 복구 난이도가 급상승합니다.
우선 누락 파트를 확보할 수 있는지 확인하고, 파일명/순서를 정확히 맞추는 것이 1순위입니다.
같은 파일인데 PC에서는 안 되고, 다른 PC에서는 되기도 해요.
도구 버전 차이, 인코딩 처리 차이, 손상 허용 정책 차이로 이런 일이 생깁니다.
한쪽은 헤더 검증이 엄격해 실패하고, 다른 쪽은 가능한 만큼 무시하고 진행하는 방식일 수 있어요.
그래서 진단 단계에서 “다른 도구로도 동일하게 실패하는지”를 확인하는 게 중요합니다.
헤더가 깨졌는지 가장 확실하게 감 잡는 방법이 있나요?
“형식 인식 실패”나 “목록을 못 읽음” 같은 메시지는 헤더/목록 손상 신호일 가능성이 큽니다.
또, 파일 크기가 의심스럽게 작거나(부분 다운로드), 끝에서만 터지면(끝 레코드 손상) 헤더 쪽을 강하게 의심해볼 수 있어요.
마지막으로, 확장자와 시그니처가 불일치하면 거의 확정적으로 “포맷 오인/변형” 가능성이 높습니다.
마무리
압축 파일 오류는 막막해 보이지만, “헤더가 안내하는 구조가 맞는지”라는 관점으로 보면 훨씬 정리해서 볼 수 있어요.
확장자만 믿지 말고, 시그니처와 구조(앞/끝/목록)를 기준으로 차근차근 좁혀가면 원인에 훨씬 빨리 도착합니다.
혹시 지금 겪는 오류 메시지, 확장자, 파일이 만들어진 경로(다운로드/메일/메신저 등)를 댓글로 남겨주시면
어떤 헤더 문제일 가능성이 큰지 같이 짚어드릴게요. 혼자 끙끙대지 마시고 편하게 이야기해 주세요.
관련된 사이트 링크
더 깊게 확인하고 싶다면 아래 문서들이 큰 도움이 됩니다. (포맷 구조를 “원문”으로 확인할 수 있어요.)
- PKWARE ZIP 포맷 명세 (APPNOTE)ZIP의 로컬 헤더, 중앙 디렉터리, 끝 레코드 구조를 확인할 때 가장 표준에 가깝습니다.
- RFC 1951 (DEFLATE 압축 규격)ZIP/GZIP 등에서 흔히 쓰는 DEFLATE의 스트림 구조를 이해할 때 도움이 됩니다.
- 7-Zip SDK / 7z 포맷 관련 자료7z 구조와 구현 관점을 함께 보기에 좋고, 실무적으로 참고하기 편합니다.
태그 정리
압축파일오류, 헤더구조, 매직넘버, ZIP포맷, 7z포맷, RAR오류, CRC오류, 분할압축, 파일손상복구, 압축해제실패