Linux / 명령어 / zip - 여러 파일을 ZIP 아카이브로 묶기

zip은 파일과 디렉터리를 하나의 ZIP 아카이브로 묶고 압축합니다. 다른 운영체제와 파일을 주고받을 때 자주 사용하는 형식입니다.

zip 명령어란?

첫 번째 인수는 만들거나 갱신할 ZIP 파일이고 뒤의 인수는 포함할 파일입니다. 디렉터리 안의 파일까지 담으려면 -r을 지정합니다. 이미 있는 ZIP 파일을 대상으로 실행하면 새 아카이브를 무조건 새로 만드는 것이 아니라 기존 항목을 갱신·추가할 수 있으므로 작업 의도를 먼저 확인하세요.

기본 문법

zip [옵션] 아카이브.zip 파일 또는 디렉터리 ...

설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man zip으로 현재 시스템의 설명을 확인하세요.

사용 예제

두 파일 묶기

기존 파일이 없는 새 ZIP 이름을 선택합니다.

zip documents.zip report.txt notes.txt

디렉터리 전체 압축

-r로 하위 디렉터리와 파일을 포함합니다.

zip -r project.zip project/

생성한 아카이브 확인

압축 후 unzip -l로 파일 목록을 검토합니다.

unzip -l project.zip

ZIP 파일에 무엇이 들어갔는지 확인하기

zip은 여러 파일을 하나의 ZIP 아카이브에 넣을 수 있습니다. -q는 추가 과정을 조용히 하고, 목록 조회는 별도 명령으로 수행합니다.

printf 'hello\n' > note.txt
zip -q bundle.zip note.txt
unzip -Z -1 bundle.zip

예시 출력:

note.txt

목록에 이름이 있다고 해서 압축 파일의 무결성까지 확인된 것은 아닙니다. unzip -t bundle.zip로 구조를 검사할 수 있습니다. 비밀번호를 사용한 ZIP의 기본 암호화는 민감한 정보를 보호하는 데 충분하지 않을 수 있으므로 보안 목적이라면 적절한 암호화 방식을 별도로 선택하세요.

주요 옵션과 형식

옵션·형식 설명
-r 디렉터리의 하위 항목을 재귀적으로 포함합니다.
-0 압축하지 않고 파일을 저장합니다.
-1 ... -9 압축 수준을 선택합니다.
-u 기존 아카이브에서 변경된 파일을 갱신합니다.
-x 패턴 일치하는 경로를 제외합니다.

사용할 때 주의할 점

기존 ZIP 파일을 재사용하면 구성 내용이 예상과 다르게 갱신될 수 있으므로 새 이름으로 만들거나 먼저 백업하세요. 일반적인 ZIP 암호 옵션은 강한 보안 수단으로 가정하지 말고 민감한 데이터에는 적절한 암호화 도구를 선택하세요. ZIP 형식은 플랫폼 간 권한·소유권 같은 메타데이터 보존이 동일하지 않을 수 있습니다.

자주 묻는 질문

zip project.zip project/만으로 폴더 안의 파일이 모두 들어가나요?

아니요. 디렉터리 내용을 재귀적으로 포함하려면 보통 zip -r project.zip project/을 사용합니다.

공식 문서

옵션의 정확한 동작과 구현별 차이는 zip 관련 공식 문서에서 확인할 수 있습니다.

같은 카테고리의 다른 글
Linux / 명령어 / htop - 대화형 프로세스 목록 탐색

Linux / 명령어 / htop - 대화형 프로세스 목록 탐색

Linux htop 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

Linux 강좌 / PID와 PPID 이해하기 - 프로세스 확인과 관리

PID와 PPID의 의미와 부모·자식 프로세스의 관계를 설명합니다. ps와 pgrep으로 확인하고, 직접 만든 실습 프로세스를 안전하게 종료하는 방법을 익힙니다.

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux / 명령어 / host - 도메인과 IP 주소의 DNS 정보 간단히 조회

Linux host 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / nice - 새 명령의 CPU 우선순위 조정

Linux / 명령어 / nice - 새 명령의 CPU 우선순위 조정

Linux nice 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux / 명령어 / renice - 실행 중인 프로세스 nice 값 변경

Linux renice 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

Linux / 명령어 / head - 파일 앞부분의 줄과 바이트 출력

Linux head 명령어로 파일의 처음 몇 줄이나 바이트를 출력하는 방법을 설명합니다. 여러 파일, 음수 개수, 파이프 활용과 바이너리 데이터 주의점도 정리합니다.

Linux / 명령어 / fg - 셸 작업을 포그라운드로 가져오기

Linux / 명령어 / fg - 셸 작업을 포그라운드로 가져오기

Linux fg 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / mv - 파일 이동과 이름 변경

Linux / 명령어 / mv - 파일 이동과 이름 변경

Linux mv 명령어로 파일과 디렉터리를 이동하거나 이름을 변경하는 방법을 설명합니다. 덮어쓰기 방지, 파일 시스템 간 이동과 안전한 자동화 방법도 정리합니다.

Linux / 명령어 / cd - 디렉터리 이동

Linux / 명령어 / cd - 디렉터리 이동

Linux cd 명령어로 절대·상대 경로, 홈과 이전 디렉터리로 이동하는 방법을 설명합니다. 심볼릭 링크 처리, CDPATH, 스크립트와 sudo cd의 한계 및 오류 해결법도 정리합니다.

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

find와 locate로 파일을 찾고 which, whereis, type으로 명령의 위치와 해석 방식을 확인합니다. 실시간 검색과 색인 검색의 차이도 짚습니다.