파일 하나를 더 작게
gzip은 파일 하나를 압축하고 그 외에는 아무것도 하지 않습니다. 묶지도 않고, 폴더 구조를 담지도 않으며, 두 개 이상을 넣을 수도 없습니다. 한계처럼 들리지만, 입력이 이미 하나의 스트림인 웹 서빙, 로그 순환, 유닉스 파이프라인에서 gzip이 어디에나 쓰이는 이유가 바로 그것입니다.
이 도구는 파일을 .gz로 압축하고 .gz 파일을 되돌리는 일을 전적으로 브라우저에서 처리합니다.
압축하거나 푸는 방법
양방향으로 동작하며, 넣은 파일을 보고 어느 쪽인지 알아서 판단합니다.
- 위 상자에 파일을 끌어다 놓으세요. 일반 파일이면 압축되고, .gz 파일이면 압축이 풀립니다.
- 시간과 크기를 맞바꾸고 싶다면 압축 수준을 고르세요. 기본값이 적당한 중간입니다.
- 결과 크기와 원본 대비 비율을 확인하세요. 텍스트 위주 파일은 70% 이상 줄어드는 경우가 많습니다.
- 결과를 내려받으세요. 원본 파일은 그대로입니다.
- 파일이 여러 개라면 ZIP 만들기를 쓰세요. gzip은 설계상 한 번에 정확히 파일 하나만 다룹니다.
gzip, zip, tar는 서로의 대안이 아닙니다
이 셋은 "압축한다"는 통념 안에서 겹치기 때문에 자주 혼동되지만, 각자 하는 일이 다릅니다. gzip은 스트림 하나를 압축합니다. tar는 여러 파일을 압축 없이 하나로 묶습니다. zip은 두 가지를 한 번에 하며, 그래서 데스크톱에서 범용 기본값이 되었습니다.
유닉스 계열의 .tar.gz 관례가 여기서 설명됩니다. tar가 파일들을 하나의 스트림으로 모으고 gzip이 그 스트림을 압축하는데, 이 2단계 방식은 파일을 각각 압축하지 않고 전체를 가로질러 압축합니다. 비슷한 작은 파일이 많을 때는 개별로 압축하는 것보다 결과가 눈에 띄게 작아지며, 소스 배포판이 여전히 이 방식으로 배포되는 이유이기도 합니다.
압축 수준
일반적인 텍스트 파일을 기준으로 한 속도와 크기의 맞바꿈입니다.
| 수준 | 속도 | 수준 6 대비 크기 | 쓰는 경우 |
|---|---|---|---|
| 1 | 가장 빠름 | +10–15% | 실시간 스트림, 아주 큰 파일 |
| 6 (기본) | 균형 | 기준 | 거의 모든 경우 |
| 9 | 가장 느림 | −1–3% | 한 번 저장해 자주 내보내는 파일 |
수준 6과 9의 차이는 작습니다. 흔히 몇 퍼센트인데, 시간은 두 배 이상 들 수 있습니다. 수준 9는 한 번 압축해 여러 번 내려받게 하는 경우에만 그 비용이 값을 합니다.
gzip을 만나게 되는 곳
여러분이 여는 거의 모든 웹 페이지는 gzip이나 더 새로운 Brotli 형식으로 도착합니다. 브라우저와 서버가 Accept-Encoding 헤더로 협상하죠. 서버 로그는 대개 매일 밤 순환되며 gzip으로 압축되는데, 로그 텍스트가 대단히 잘 압축되기 때문입니다. 백업, 데이터베이스 덤프, 데이터 내보내기도 같은 이유로 이를 씁니다.
gzip이 하지 않는 일도 알아둘 만합니다. 암호화하지 않고, 누가 만든 파일인지 검증하지 않으며, .gz에는 암호가 없습니다. 헤더에 원본 파일 이름과 수정 시각을 저장하는데, 편리하기도 하지만 그 정보가 파일을 따라다닌다는 뜻이기도 합니다.