ioerror

zip 사용법 및 옵션 - 파일 및 디렉터리 압축 및 아카이브 생성 본문

OS

zip 사용법 및 옵션 - 파일 및 디렉터리 압축 및 아카이브 생성

반응형

zip - package and compress (archive) files

파일 및 디렉터리 압축 및 아카이브 생성

zip 명령어는 하나 이상의 파일이나 디렉터리를 무손실 데이터 압축 알고리즘(Deflate)을 사용하여 단일 zip 아카이브 파일로 묶고 압축하는 유닉스, 리눅스, 윈도우 지원 대표 CLI 유틸리티이다. 디스크 공간 절약, 네트워크 전송 시간 단축, 다중 파일 포맷 보존, 암호화를 통한 데이터 보호 등 다양한 환경에서 활용된다.

1. 명령어 용도

  • 웹 서버 또는 애플리케이션의 특정 디렉터리 및 로그 파일을 백업용으로 압축하는 경우
  • 네트워크 전송 시 여러 개의 소스 코드 및 대용량 폴더 구조를 하나로 묶는 경우
  • 대용량 파일을 이메일 첨부 용량 제한에 맞춰 여러 개로 분할 압축하는 경우
  • 민감한 데이터가 포함된 아카이브에 암호를 설정하여 보안을 강화하는 경우

2. 명령어 서식

Bash
 
zip [options] zipfile files_to_zip...

3. 명령어 옵션

  • 주요 옵션 소개 테이블
옵션 설명 사용가능 OS 및 쉘
-r, --recurse-paths 지정한 디렉터리와 내부의 모든 하위 디렉터리 및 파일을 재귀적으로 포함하여 압축하다.  
-0 ~ -9 압축률을 지정하다. (-0: 압축 없음, -1: 가장 빠름, -9: 최고 압축률)  
-e, --encrypt 아카이브 생성 시 비밀번호를 설정하도록 요청하여 암호화하다.  
-P password 비밀번호를 프롬프트 없이 커맨드라인 상에서 직접 지정하다.  
-u, --update 기존 zip 아카이브에서 변경되거나 새롭게 추가된 파일만 업데이트하다.  
-f, --freshen 기존 zip 아카이브 내에 이미 존재하는 파일 중 수정된 파일만 업데이트하다.  
-d 기존 zip 아카이브 내부에서 특정 파일이나 패턴에 일치하는 항목을 삭제하다.  
-m, --move 지정한 파일들을 zip 아카이브에 추가한 후 원본 파일을 삭제하다 (이동).  
-x pattern 압축 대상에서 제외할 파일 또는 디렉터리 패턴을 지정하다.  
-i pattern 지정한 패턴과 일치하는 파일만 선택하여 압축에 포함하다.  
-q, --quiet 실행 시 화면에 출력되는 진단 및 진행 메시지를 표시하지 않다.  
-v, --verbose 진단 정보를 상세히 출력하거나 버전 및 아카이브 구성 정보를 표시하다.  
-s size 지정한 크기(예: 10m, 1g) 단위로 분할 압축(Multi-volume archive)을 수행하다.  
-T, --test 압축 완료 후 생성된 zip 파일의 무결성을 검사하다.  
-y, --symlinks 심볼릭 링크가 가리키는 원본 파일 대신 심볼릭 링크 자체를 보존하여 압축하다. [Linux/Unix]
-FF, --fixfix 손상된 zip 아카이브를 복구하기 위해 구조를 인덱싱하다.  
-@ 표준 입력(stdin)으로 전달된 파일 목록을 읽어 압축하다.  
  • 명령어 옵션 사용시 결과 예시
Bash
 
# 1. 디렉터리 재귀적 압축 (-r)
zip -r project.zip ./src ./public
# output:
#   adding: src/ (stored 0%)
#   adding: src/index.js (deflated 65%)
#   adding: public/ (stored 0%)
#   adding: public/style.css (deflated 70%)

# 2. 암호 설정 및 최고 압축률 지정 (-e, -9)
zip -9 -e secure_data.zip confidential.pdf
# output:
# Enter password: 
# Verify password: 
#   adding: confidential.pdf (deflated 12%)

# 3. 특정 디렉터리/파일 제외 후 압축 (-x)
zip -r build.zip . -x "*.git*" -x "node_modules/*"
# output: .git 및 node_modules 폴더를 제외한 모든 항목이 build.zip으로 압축되다.

# 4. 압축 파일 내 특정 항목 삭제 (-d)
zip -d project.zip "src/temp.tmp"
# output:
# deleting: src/temp.tmp

4. 명령어 특이사항(유의사항)

  • 디렉터리 압축 시 -r 옵션 필수: 디렉터리를 지정할 때 -r 옵션을 누락하면 디렉터리 엔트리 자체만 추가되고 내부의 파일 및 하위 폴더는 압축 대상에서 제외된다.
  • tar와의 차이점: 유닉스/리눅스의 tar 명령어는 아카이브(하나의 파일로 묶기)와 압축(gzip, bzip2 등) 단계가 명확히 구분되는 반면, zip은 묶기와 압축을 동시에 수행하다.
  • 한글 파일명 깨짐 문제: 유닉스/리눅스 환경(UTF-8)에서 압축한 zip 파일을 윈도우(CP949/EUC-KR) 환경에서 해제할 경우 파일명이 깨질 수 있다. 이를 방지하기 위해서는 최신 버전의 zip/unzip 유틸리티를 사용하거나 인코딩 관련 옵션을 지정해야 하다.
  • 분할 압축 해제 방식: -s 옵션으로 분할된 zip 아카이브는 zip -s 0 split.zip --out single.zip 명령을 통해 단일 아카이브로 먼저 결합한 후 해제해야 하다.

관련 명령어들

  • unzip: zip 형식으로 압축된 아카이브 파일의 내용 목록을 확인하거나 압축을 해제하다.
  • tar: 여러 개의 파일과 디렉터리를 하나의 아카이브 파일로 묶거나 해제하다.
  • gzip: GNU zip 압축 유틸리티로 단일 파일을 압축하다.
  • bzip2: 높은 압축률을 제공하는 단일 파일 압축 유틸리티이다.
  • 7z: 7-Zip 아카이브 프로그램을 사용하여 다양한 압축 포맷을 처리하다.

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

반응형
Comments