Skip to content
khiopost — 개발·AI 트러블슈팅
Go back

맥 압축 오류 79, 윈도우 zip이 안 풀릴 때 (원인은 deflate64였다)

Updated:

누가 윈도우에서 압축해서 보내준 2일차_1.zip을 받았다. 1.8GB짜리 영상 압축 파일이었는데, 아이패드 파일 앱에서 눌러도 안 풀리고, 맥북으로 옮겨 더블클릭했더니 이번엔 대화상자 하나가 튀어나왔다.

'2일차_1.zip'을(를) '다운로드'(으)로 압축 해제할 수 없습니다. (오류 79 - 부적절한 파일 유형 및 포맷.)

맥 압축 오류 79. 검색해보면 죄다 "한글 파일명 인코딩 문제니까 터미널에서 unzip 쳐라"는 얘기뿐인데, 그대로 해봤더니 그것마저 안 됐다. 솔직히 다운로드가 잘못됐나 싶어 파일을 다시 받기까지 했다. 결국 원인은 전혀 엉뚱한 데 있었다. 파일을 압축한 방식 자체가 맥 기본 압축 유틸이 못 읽는 거였다. 이 글은 맥 압축 오류 79가 왜 뜨는지 실제로 파일을 뜯어본 기록이고, 마지막엔 앱 하나로 5초 만에 푼 방법까지 있다.

맥 압축 오류 79 - 아카이브 유틸리티가 zip 압축 해제를 거부하며 띄운 부적절한 파일 유형 및 포맷 오류 대화상자

맥 압축 오류 79, 정확히 뭐라고 뜨나

오류 79는 "부적절한 파일 유형 및 포맷"이라는 뜻이다. 맥 기본 아카이브 유틸리티가 그 zip의 압축 방식을 해석하지 못할 때 이 대화상자를 띄운다.

내 경우가 딱 그랬다. 파일이 깨진 게 아니라 맥이 읽는 방법을 모르는 상태였다. 확인차 이런 것부터 해봤다.

기기 문제가 아니라는 게 여기서 확실해졌다. 평소 아이패드로 맥을 원격으로 붙여 쓰는데, 이번엔 두 기기가 완전히 똑같은 지점에서 막혔다. 파일 자체에 뭔가 있다는 뜻이었다.

흔한 해결법부터 다 해봤다 — 전부 실패

검색에 나오는 터미널 해법 세 가지를 순서대로 다 돌려봤는데, 하나도 안 풀렸다. 근데 실패하는 방식이 서로 달라서, 그게 오히려 원인을 좁히는 힌트가 됐다.

터미널 unzip은 "Illegal byte sequence"

제일 흔한 조언이 "터미널에서 unzip 쳐라"다. 쳐봤다.

$ unzip -o "2일차_1.zip" -d ./out
Archive:  2일차_1.zip
error:  cannot create ./out/2+�-�_1.mp4
        Illegal byte sequence

파일명이 2+�-�_1.mp4로 깨져서 나온다. 윈도우가 한글 파일명을 CP949로 저장했는데, 맥 파일시스템은 UTF-8이라 그 바이트로는 파일을 만들 수가 없다("Illegal byte sequence"). 압축을 푸는 것 자체보다 이름을 못 써서 멈춘 거다.

unzip -O cp949 옵션? 맥엔 없다

그럼 인코딩을 지정하면 되겠지 싶어 unzip -O cp949를 쳤다. 근데 맥에 깔린 애플 버전 unzip에는 -O 옵션이 아예 없다. 도움말만 뱉고 끝난다. 이 옵션은 리눅스용 Info-ZIP 빌드 얘기였던 거다. 여기서 30분은 날렸다.

ditto도 "Unknown compression type"

맥에는 ditto라는 내장 명령이 있다. 아카이브 유틸리티가 내부적으로 쓰는 것과 같은 백엔드다. 마지막 희망으로 돌려봤다.

$ ditto -x -k "2일차_1.zip" ./out
ditto: Unknown compression type

여기서 감이 왔다. ditto가 "compression type"을 모른다고 한다. 파일명이 아니라 압축 방식을 못 읽는 거였다. 아카이브 유틸리티가 오류 79를 띄운 것과 정확히 같은 이유다.

진짜 원인은 압축 방식, deflate64였다

이 zip은 deflate64라는 압축 방식으로 만들어졌고, 맥 기본 압축 스택이 이 방식을 지원하지 않아서 오류 79가 난 거였다. 파일을 직접 뜯어보니 바로 나왔다.

$ file "2일차_1.zip"
2일차_1.zip: Zip archive data, at least v2.1 to extract, compression method=deflate64

$ zipinfo -v "2일차_1.zip" | grep -i compression
  compression method:                             deflated (enhanced-64k)
  uncompressed size:                              2739357882 bytes

deflated (enhanced-64k), 이게 deflate64(Enhanced Deflate)다. zip 포맷을 만든 PKWare가 만든 독점 확장 방식(압축 method 9)이라, 오픈소스나 맥 기본 유틸에서는 지원이 빈약하다. 대부분의 zip 라이브러리가 "독점 방식이라"는 이유로 구현을 안 했다.

그럼 왜 이 파일이 하필 deflate64로 압축됐을까. 받은 파일이라 어떻게 만들었는지는 나도 모른다. 다만 마이크로소프트 문서를 보면, 윈도우 탐색기의 기본 "압축(ZIP) 폴더" 기능은 파일이 2GB를 넘으면 자동으로 deflate64를 쓴다고 한다. 이 zip 안의 영상 원본이 2739357882바이트, 약 2.7GB다. 딱 2GB를 넘는다. 정황상 윈도우에서 우클릭 압축으로 만들어 보낸 파일일 가능성이 크다.

결국 문제가 두 겹이었다. 압축 방식(deflate64)이 맥 네이티브 도구에서 안 풀리고, 그 위에 한글 파일명(CP949)까지 겹쳐서, 검색에 나오는 흔한 해법들이 하나씩 다 빗나간 거다. 맥 기본 도구가 이유 없이 안 먹히던 다른 경험처럼, 이번에도 파일이 아니라 도구가 문제였다.

결국 Keka로 풀었다 — 공식 홈페이지는 무료

이 오류를 실제로 끝낸 건 Keka라는 압축 앱이었다. deflate64도 한글 파일명도 알아서 처리하고 한 번에 풀렸다.

여기 함정이 하나 있다. Keka는 맥 앱스토어에서는 유료로 팔지만, 공식 홈페이지(keka.io)에서는 무료로 받을 수 있다. 완전히 같은 앱이고, 앱스토어 버전은 개발자를 후원하면서 자동 업데이트를 받는 용도라고 보면 된다. 급하면 홈페이지에서 받으면 된다.

처음엔 반디집을 쓸까 했는데, 맥용 반디집은 무료 버전이 없다. 앱스토어에서 구매하거나 Bandizip 365 구독을 해야 한다. 굳이 돈 낼 이유가 없어서 Keka로 갔다.

설치하고 푸는 순서는 이렇다.

Keka가 되는 이유는 단순하다. 내부적으로 7-Zip 계열 엔진을 써서 deflate64 해제를 지원하고, 파일명 인코딩도 자체적으로 처리하기 때문이다. 맥 네이티브 도구가 둘 다 못 하던 걸 앱 하나가 해결한다.

터미널만으로 풀고 싶다면

앱을 안 깔고 싶고 파일이 하나뿐이라면, 터미널에서 unzip -p로 내용을 통째로 빼내는 우회법이 있다. 압축을 풀 때 파일을 만드는 단계에서 한글 파일명 때문에 막혔으니, 그 단계를 건너뛰고 내용을 바로 다른 이름으로 쏟아버리는 방식이다.

$ unzip -p "2일차_1.zip" > 2일차_1.mp4
$ file 2일차_1.mp4
2일차_1.mp4: ISO Media, MP4 Base Media v4

-p는 압축 내용을 화면(표준출력)으로 뱉는 옵션이라, 파일명을 새로 만들 필요가 없어서 "Illegal byte sequence"를 피한다. deflate64 해제는 애플 unzip이 알아서 해준다. 실제로 빼낸 파일을 file로 찍어보면 멀쩡한 mp4다.

단, 이건 압축 안에 파일이 하나일 때만 쓸 수 있는 트릭이다. 여러 개가 들어 있으면 전부 한 파일로 뭉개져 버린다. 그 경우엔 그냥 Keka가 답이다.

그래서 뭘 깔면 되나

맥에서 zip을 더블클릭했는데 오류 79가 뜨면, 파일 탓부터 하지 말자. 다시 받아도 십중팔구 똑같다. 압축 방식이 deflate64거나 한글 파일명이 깨졌거나, 아니면 둘 다다. 맥 기본 아카이브 유틸리티는 이걸 못 풀고, 검색에 나오는 터미널 명령도 애플 버전에선 반쯤 막혀 있다.

제일 빠른 길은 keka.io에서 Keka를 무료로 받아 그걸로 여는 거다. 나처럼 아이패드로 웬만한 작업을 다 하다가 파일 하나 못 열어서 맥까지 켰다면, 앱스토어 유료 화면 보고 지갑 꺼내기 전에 공식 홈페이지부터 들어가 보는 걸 추천한다.


글쓴이 — khio · 10년차 백엔드 개발자. 직접 겪은 문제와 해결 과정을 기록한다.
Share this post on:

Previous Post
맥 자소분리 — 한글 파일명 깨짐, 압축 3종을 바이트 단위로 검증했다
Next Post
Jump Desktop으로 iPad에서 Mac 원격 접속 3가지 방법 비교