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 / 명령어 / fmt - 일반 텍스트 문단의 줄바꿈 조정

Linux / 명령어 / fmt - 일반 텍스트 문단의 줄바꿈 조정

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

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux / 명령어 / rpm - RPM 패키지와 설치 데이터베이스 조회

Linux rpm 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

Linux / 리눅스 Bash 명령어 연결 연산자: ;, &&, ||, &, | 사용법

리눅스 Bash의 ;, &&, ||, &, |, |&, ! 차이를 종료 상태와 실제 예제로 설명합니다. 조건부 실행, 백그라운드 작업, 파이프라인과 pipefail 사용법까지 정리합니다.

Linux / 명령어 / hostnamectl - 호스트 이름과 시스템 정보 확인·변경

Linux / 명령어 / hostnamectl - 호스트 이름과 시스템 정보 확인·변경

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

Linux / 명령어 / sftp - SSH로 안전하게 파일 전송

Linux / 명령어 / sftp - SSH로 안전하게 파일 전송

Linux sftp 명령어로 SSH 기반 파일을 업로드하고 다운로드하는 방법을 설명합니다. 경로 구분, 전송 재개, 공개 키 인증, 배치 자동화와 보안 점검 사항을 정리합니다.

Linux / 명령어 / stat - 파일 정보와 메타데이터 확인

Linux / 명령어 / stat - 파일 정보와 메타데이터 확인

Linux stat 명령어로 파일 크기, 권한, 소유자, inode와 타임스탬프를 확인하는 방법을 설명합니다. atime·mtime·ctime·Birth의 차이와 출력 형식, 파일 시스템 조회법도 정리합니다.

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux apt 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux 강좌 / 파일 내용 읽기 - cat, less, more, head, tail

Linux 강좌 / 파일 내용 읽기 - cat, less, more, head, tail

cat, less, more, head, tail로 리눅스 파일 내용을 읽는 방법을 비교합니다. 짧은 파일과 긴 파일, 앞·뒤 일부를 확인할 때의 선택 기준과 실습 결과를 설명합니다.

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

Linux / 명령어 / comm - 정렬된 두 파일의 공통·고유 행 비교

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

Linux 강좌 / 셸의 명령 실행 방식 - ;, &&, ||, 별칭과 환경 변수

Linux 강좌 / 셸의 명령 실행 방식 - ;, &&, ||, 별칭과 환경 변수

Bash가 명령을 해석하고 종료 상태에 따라 다음 명령을 실행하는 방식을 알아봅니다. ;, &&, ||와 별칭·환경 변수의 차이를 안전한 예제로 설명합니다.