메일 첨부 용량에 걸려서, 이미 만든 ZIP 파일을 한 번 더 ZIP으로 묶어 본 적이 있을 겁니다. 두 번 압축하면 조금이라도 더 줄 것 같지만, 실제로 재 보면 결과는 안에 든 파일 종류에 따라 정반대로 갈립니다.
결론부터 적으면 이렇습니다. 사진 5장을 묶은 ZIP은 다시 ZIP으로 묶자 오히려 453바이트 커졌습니다. 작은 CSV 300개를 묶은 ZIP은 다시 묶자 20% 더 줄었는데, 줄어든 몫은 대부분 파일 내용이 아니라 ZIP이 파일마다 붙이는 이름표에서 나왔습니다. 그리고 두 번 압축한 결과는 처음부터 7z로 한 번 압축한 크기의 두 배가 넘었습니다.
측정 환경은 Ubuntu 24.04, Info-ZIP Zip 3.0, 7-Zip 23.01입니다. 첫 ZIP은 기본 레벨(6)로, 다시 묶을 때는 최고 레벨(9)로, 7z는 -mx=9로 압축했습니다.
사진을 묶은 ZIP은 다시 묶으면 오히려 커졌습니다
먼저 JPG 사진 5장(합계 3,113,525바이트)으로 재 봤습니다.
| 방법 | 결과 크기 | 원본 대비 |
| 원본 JPG 5장 | 3,113,525 B | 100 % |
| ZIP으로 한 번 | 3,110,056 B | 99.9 % |
| 그 ZIP을 다시 ZIP으로 | 3,110,509 B | 99.9 % (453 B 증가) |
| 그 ZIP을 다시 7z로 | 3,110,129 B | 99.9 % (73 B 증가) |
| 처음부터 7z로 한 번 | 3,112,719 B | 100.0 % |
JPG는 저장할 때 이미 압축된 형식이라 ZIP이 더 줄일 거리가 거의 없습니다. 첫 ZIP도 0.1% 줄이는 데 그쳤고, 그 ZIP을 다시 묶으면 줄일 것은 없이 새 머리말만 붙어서 오히려 커졌습니다. 이런 파일은 형식을 7z로 바꿔도 의미 있는 차이가 나지 않았습니다. 동영상이나 이미 압축된 파일이 주로 든 ZIP도 같은 경우입니다.
작은 CSV 300개는 다시 묶자 20% 더 줄었습니다
다음은 1.5KB 안팎의 작은 CSV 파일 300개(합계 446,684바이트)입니다. 날짜별로 쌓인 보고서 파일을 한꺼번에 보내는 상황과 비슷합니다.

ZIP 한 번으로 200,571바이트가 됐고, 이 ZIP을 다시 ZIP으로 묶자 159,454바이트로 41,117바이트(20.5%) 더 줄었습니다. 7z로 다시 묶으면 153,581바이트까지 내려갔습니다. 여기까지만 보면 '두 번 압축하면 더 작아진다'가 맞는 것 같습니다.
그런데 맨 아래 막대를 보면 이야기가 달라집니다. 같은 CSV 300개를 처음부터 7z로 한 번 압축하면 72,238바이트였습니다. 두 번 압축한 결과의 절반도 안 됩니다.
두 번째 압축이 줄인 것은 파일 이름표였습니다
41KB가 어디서 줄었는지 첫 ZIP을 뜯어 봤습니다. 200,571바이트 가운데 실제로 압축된 데이터는 153,749바이트이고, 나머지 46,822바이트(23.3%)는 파일마다 붙는 머리말과 맨 끝의 목록이었습니다. ZIP은 파일 하나마다 이름, 크기, 날짜, 검사값을 적은 머리말을 붙이고, 끝에 같은 정보를 한 번 더 모아 둡니다. 300개 파일 이름이 report_000.csv, report_001.csv처럼 거의 같으니 이 부분은 다시 압축하면 잘 줄어듭니다.
반대로 압축된 데이터 153,749바이트만 따로 떼어 다시 압축하니 149,689바이트로, 2.6% 줄어드는 데 그쳤습니다. 줄어든 41KB 가운데 내용에서 나온 것은 4KB 남짓이고, 나머지 대부분은 이름표에서 나온 셈입니다.
한 번 압축된 데이터는 겉보기에 무작위에 가까워집니다. 300개 CSV에 똑같이 들어 있던 열 이름 같은 반복이 이미 감춰져서, 두 번째 압축기는 그것을 찾아내지 못합니다. ZIP이 파일을 하나씩 따로 압축하면서 놓친 반복은 두 번 압축해도 되찾을 수 없습니다. ZIP이 파일마다 따로 압축하는 구조는 작은 파일이 수천 개인 폴더 글에서 자세히 다뤘습니다.
처음부터 7z로 묶으면 왜 그렇게 작을까
7z는 기본 설정에서 여러 파일을 하나로 이어 붙인 뒤 통째로 압축합니다(솔리드 압축). 300개 CSV에 되풀이되는 열 이름과 비슷한 숫자 패턴을 한 흐름 안에서 찾아내니 원본의 16%까지 줄었습니다.
눈여겨볼 결과가 하나 더 있습니다. 압축 없이 ZIP으로 묶기만 한 파일(493,506바이트)을 7z로 압축하자 75,596바이트로, 처음부터 7z로 압축한 것과 거의 같았습니다. 압축하지 않은 ZIP 안에는 원본 내용이 그대로 들어 있어서, 7z가 그 안의 반복을 그대로 볼 수 있기 때문입니다. 결국 순서의 문제입니다. 압축은 맨 마지막에 한 번, 가장 큰 덩어리에 걸 때 가장 작아집니다.
7z 결과는 다시 돌릴 때마다 파일 시각 정보 차이로 수십 바이트씩 달라졌습니다(72,238~72,322바이트). 결론에 영향을 줄 크기는 아닙니다.
이미 받은 ZIP을 더 줄이고 싶다면
- ZIP을 다시 ZIP으로 묶지 말고, 풀어서 원래 파일을 7z로 한 번에 압축합니다. 이번 측정에서는 200.6KB가 72.2KB로 줄었습니다.
- 7-Zip 화면에서는 압축 형식을 7z로, 압축 레벨을 울트라로 고르면 됩니다.
- 받는 사람이 7z를 열 수 없어 ZIP을 써야 한다면, 텍스트 파일 여러 개를 먼저 하나로 합친 뒤 ZIP으로 묶는 편이 다시 묶는 것보다 효과가 큽니다.
- 사진이나 동영상이 주로 든 ZIP은 어떤 방법으로도 거의 줄지 않습니다. 용량 제한에 걸린다면 나눠 보내거나 해상도를 줄이는 쪽이 답입니다.
명령으로 하면 두 줄입니다.
# 받은 ZIP을 폴더로 풀고
7z x reports.zip -oreports
# 풀린 폴더를 7z로 한 번에 압축
7z a -mx=9 reports.7z reports
두 번 압축의 숨은 비용
크기가 줄어드는 경우라도 이중 압축은 받는 사람에게 불편을 넘깁니다. 압축을 두 번 풀어야 하고, 바깥 ZIP을 열어서는 안에 어떤 파일이 있는지 바로 보이지 않습니다. 파일 하나만 꺼내려 해도 안쪽 ZIP을 통째로 풀어야 합니다. 같은 수고라면 풀어서 7z로 한 번 압축하는 편이 크기도 더 작습니다.
상황별 정리
| 안에 든 파일 | 다시 압축하면 | 더 나은 방법 |
| 사진, 동영상, 이미 압축된 파일 | 줄지 않거나 오히려 커짐 | 그대로 보내거나 나눠 보내기 |
| 이름이 비슷한 작은 문서 수백 개 | 20% 안팎 줄어듦(주로 이름표 몫) | 풀어서 7z로 한 번에 압축 |
두 번 압축해서 줄어드는 몫은 대개 첫 압축이 남긴 낭비입니다. 그 낭비는 처음부터 한 번에 묶으면 아예 생기지 않습니다.
참고한 공식 문서
- PKWARE, ZIP 파일 형식 명세(APPNOTE.TXT): 파일마다 붙는 머리말과 끝의 목록 구조
- 7-Zip, 7z 형식 설명: 7z 형식과 압축 방식
함께 읽으면 좋은 글
'압축' 카테고리의 다른 글
| 압축 파일 안의 문서 한 장만 고쳐야 할 때, 전부 풀지 않고 바꾸기 (0) | 2026.10.01 |
|---|---|
| 압축 파일 안에 뭐가 들었는지, 풀지 않고 확인하고 필요한 것만 꺼내기 (0) | 2026.09.30 |
| 최고 압축을 고르면 얼마나 더 줄어들까, 레벨 0부터 9까지 재 봤습니다 (0) | 2026.09.27 |
| 사진과 동영상을 ZIP으로 묶으면 용량이 줄 거라는 생각, 실제로는 거의 그대로입니다 (0) | 2026.09.22 |
| 작은 파일이 수천 개인 폴더는 압축해도 왜 별로 안 줄어들까 (0) | 2026.09.17 |