---
title: unzip — 압축 풀기와 확인
date: 2026-10-18
time: 12:00
model: admin
category: programs
author_type: human
summary: zip 파일의 내용을 확인하거나 지정한 경로에 푸는 명령어.
tags: 프로그램, 파일 및 디스크 관리, unzip
---
**💬 "unzip 명령어"**
unzip은 zip 파일을 풉니다. `-l`로 먼저 목록을 보는 습관이 사고를 막습니다.
풀 위치는 `-d`로 지정합니다.
- **개념**: zip 아카이브의 내용을 확인(-l)하거나 풉니다.
- **왼쪽 인자**: 대상 zip 파일입니다.
- **-l 출력**: 파일명·크기·압축률 목록과 전체 요약을 보여줍니다.
- **-d**: 풀 대상 디렉터리를 지정합니다.
## 자주 쓰는 옵션
| 옵션 | 설명 |
| --- | --- |
| -l | 내용 목록만 봅니다(풀지 않음) |
| -d
| 지정한 디렉터리에 풉니다 |
| -o | 확인 없이 덮어씁니다 |
| -q | 조용히 실행 |
| -x <패턴> | 특정 파일을 제외하고 풉니다 |
## 필수 명령어 조합 3가지
- `unzip -l release.zip | head -20` — 풀기 전에 내용과 경로 확인
- `unzip -q release.zip -d /opt/app/releases/20261018` — 지정 경로에 조용히 풀기
- `unzip -o upload.zip -d /tmp/x -x '*.exe'` — 덮어쓰며 특정 파일 제외
**💬 "명령어 옵션을 조합한 실전 예시 하나 부탁해"**
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
### 1단계 · 목록 확인
경로가 포함됐는지, 최상위 폴더 구조가 어떤지 봅니다.
```
unzip -l /tmp/release.zip | head
```
### 2단계 · 임시 경로에 풀기
운영 경로에 바로 풀지 않습니다.
```
unzip -q /tmp/release.zip -d /tmp/verify
```
### 3단계 · 반영
검증 후 대상 경로로 이동하거나 링크를 교체합니다.
```
unzip -o -q /tmp/release.zip -d /opt/app/releases/20261018
```
## 실무에서는 이렇게 씁니다
### 1. 한글 파일명 깨짐
**상황** — 윈도우에서 만든 zip의 한글 이름이 깨져 보입니다.
```
unzip -l winfile.zip
```
**결과** — 목록이 깨져 보이면 인코딩이 CP949일 가능성이 큽니다.
**포인트** — 필요 시 unzip -O cp949(또는 해당 버전 옵션)으로 풉니다. 먼저 목록으로 확인합니다.
### 2. 안전한 배포
**상황** — 릴리스 zip을 운영 경로에 반영해야 합니다.
```
unzip -q /tmp/release.zip -d /opt/app/releases/20261018 && ln -sfn /opt/app/releases/20261018 /opt/app/current
```
**결과** — 새 릴리스가 별도 경로에 풀린 뒤 포인터만 교체되어 순단이 없습니다.
**포인트** — 임시 경로 검증 → 별도 릴리스 디렉터리 → 링크 교체 순서를 지킵니다.
## 주의할 점
- zip 슬립(경로 탈출) 취약점이 있어 신뢰할 수 없는 zip은 -l로 경로를 확인합니다.
- 운영 디렉터리에 바로 풀면 기존 파일이 덮여 롤백이 어려워집니다.
- 권한 정보가 유지되지 않아 풀은 뒤 소유자/권한을 다시 맞춰야 합니다.
## 실제 실행 화면
압축 파일 내용을 풀지 않고 확인한 결과입니다.

실제 운영 중인 서버
---
원문(HTML): https://games.cursorai.co.kr/programs/linux/filesystem/unzip.html