우분투 리눅스 zip 명령어 완벽 가이드: 압축부터 해제까지 실무 활용법

개요

리눅스 환경에서 대용량 파일과 디렉터리를 효율적으로 압축하고 배포하기 위해 필수적인 zip 명령어의 기본 사용법과 실무 옵션을 정리합니다. 패키지 설치부터 단일/다중 파일 압축, 디렉터리 재귀 압축, 압축 해제 및 파일 제외 옵션까지 터미널에서 단계별로 실습해 봅니다.

zip 및 unzip 패키지 설치와 기본 파일 압축

Ubuntu 환경에서 파일 압축 및 해제 실습을 진행하기 위해 apt-get update -qq && apt-get install -y zip unzip 명령어로 필요한 패키지를 설치합니다.

apt-get update -qq && apt-get install -y zip unzip

압축 실습을 진행할 전용 디렉터리를 생성하고 작업 위치를 이동하기 위해 mkdir -p ~/zip_demo && cd ~/zip_demo 명령어를 실행합니다.

mkdir -p ~/zip_demo && cd ~/zip_demo

압축 테스트에 사용할 첫 번째 샘플 텍스트 파일을 생성하기 위해 echo "Sample text file 1" > file1.txt 명령어를 실행합니다.

echo “Sample text file 1” > file1.txt

압축 대상에 함께 포함할 두 번째 샘플 텍스트 파일을 생성하기 위해 echo "Sample text file 2" > file2.txt 명령어를 실행합니다.

echo “Sample text file 2” > file2.txt

zip 명령어는 여러 파일이나 디렉터리를 하나의 .zip 아카이브로 묶고 압축합니다.
file1.txt와 file2.txt를 지정하여 archive.zip이라는 이름의 압축 파일을 생성합니다.
⚙️ [주요 옵션]

-r : 하위 디렉터리와 내부 파일까지 포함하여 재귀적으로 압축합니다.
-e : 압축 파일에 암호를 설정하여 보안을 강화합니다.
-u : 기존 압축 파일에서 변경되거나 새로 추가된 파일만 업데이트합니다.
-m : 압축 작업이 완료된 후 원본 파일을 자동으로 삭제합니다.
-d : 기존 압축 파일 내부에서 특정 파일을 지정하여 삭제합니다.
-q : 압축 진행 메시지를 화면에 출력하지 않는 정숙(quiet) 모드로 실행합니다.
-0 ~ -9 : 압축률을 0(무압축)부터 9(최대 압축)까지 단계별로 지정합니다.

zip archive.zip file1.txt file2.txt

새롭게 생성된 archive.zip 파일의 용량과 상세 정보를 확인하기 위해 ls -lh archive.zip 명령어를 실행합니다.

ls -lh archive.zip

디렉터리 재귀 압축(-r) 및 압축률 설정(-9)

디렉터리 압축 실습을 진행하기 위해 실습 작업 공간인 ~/zip_demo 디렉터리로 이동합니다.

cd ~/zip_demo

계층적인 디렉터리 구조의 압축 테스트 환경을 구성하기 위해 project/src와 project/logs 디렉터리를 생성합니다.

mkdir -p project/src project/logs

압축 대상 소스 파일로 사용할 project/src/app.js 샘플 파일을 생성합니다.

echo “console.log(‘App running’);” > project/src/app.js

압축 대상 로그 파일로 사용할 project/logs/app.log 샘플 파일을 생성합니다.

echo “System initialized” > project/logs/app.log

zip 명령어에 -r 옵션을 사용하여 project 디렉터리와 내부의 하위 디렉터리 및 파일 전체를 재귀적으로 묶은 project.zip 파일을 생성합니다.
실행 결과를 통해 하위 경로의 모든 디렉터리와 파일들이 누락 없이 아카이브에 포함된 것을 확인할 수 있습니다.

zip -r project.zip project

최대 압축률을 지정하는 -9 옵션과 재귀 압축 옵션 -r을 함께 적용하여 project_max.zip 파일을 생성합니다.
압축 연산 시간이 더 소요되지만 파일 용량을 최소화하고자 할 때 활용할 수 있습니다.

zip -9 -r project_max.zip project

기본 압축 방식으로 생성된 project.zip과 최대 압축률이 적용된 project_max.zip 파일의 용량 및 상세 정보를 비교 확인하기 위해 ls -lh project*.zip 명령어를 실행합니다.

ls -lh project*.zip

압축 파일 내용 미리보기(-l) 및 특정 디렉터리에 해제(-d)

압축 파일 확인 및 해제 실습을 진행하기 위해 작업 디렉터리인 ~/zip_demo로 이동합니다.

cd ~/zip_demo

unzip 명령어에 -l 옵션을 사용하여 압축을 풀지 않고 project.zip 내부에 포함된 파일 목록과 파일 크기, 생성 일시 등의 아카이브 구조를 미리 확인합니다.

unzip -l project.zip

압축을 해제할 전용 대상 디렉터리를 준비하기 위해 mkdir -p ~/zip_demo/extracted 명령어를 실행합니다.

mkdir -p ~/zip_demo/extracted

unzip 명령어에 -d 옵션을 지정하여 현재 디렉터리를 어지럽히지 않고 지정한 ~/zip_demo/extracted 디렉터리에 project.zip의 압축을 안전하게 해제합니다.
실행 결과를 통해 지정한 대상 경로에 디렉터리 구조가 생성되고 내부 파일들이 정상적으로 추출된 것을 확인할 수 있습니다.

unzip project.zip -d ~/zip_demo/extracted

지정한 디렉터리에 모든 하위 폴더와 파일들이 구조대로 온전하게 압축 해제되었는지 확인하기 위해 ls -R ~/zip_demo/extracted 명령어를 실행합니다.

ls -R ~/zip_demo/extracted

불필요한 파일 제외(-x) 및 암호화 압축 실무 팁

특정 파일 제외 및 암호화 압축 실습을 진행하기 위해 작업 디렉터리인 ~/zip_demo로 이동합니다.

cd ~/zip_demo

zip 명령어에 -x 옵션과 패턴("*.log")을 지정하여 로그 파일을 제외하고 project 디렉터리를 재귀 압축한 project_no_logs.zip 파일을 생성합니다.
실행 결과를 통해 .log 파일이 제외되고 필요한 디렉터리 및 소스 파일만 아카이브에 추가된 것을 확인할 수 있습니다.

zip -r project_no_logs.zip project -x “*.log”

unzip 명령어에 -l 옵션을 사용하여 project_no_logs.zip 압축 파일 내부의 목록을 미리 확인합니다.
출력 결과를 통해 지정했던 패턴대로 app.log 파일이 정상적으로 제외되어 아카이브에 포함되지 않았음을 확인할 수 있습니다.

unzip -l project_no_logs.zip

zip 명령어에 -P 옵션으로 비밀번호를 지정하고 -r 옵션을 함께 적용하여 project/src 디렉터리를 암호화 압축한 project_encrypted.zip 파일을 생성합니다.
실행 결과를 통해 지정한 소스 디렉터리와 내부 파일이 암호화가 적용된 상태로 안전하게 묶인 것을 확인할 수 있습니다.

zip -P SecurePass123! -r project_encrypted.zip project/src

생성된 project_no_logs.zip과 암호화 압축된 project_encrypted.zip을 포함하여 현재 디렉터리의 압축 파일 목록과 용량을 확인하기 위해 ls -lh project_*.zip 명령어를 실행합니다.

ls -lh project_*.zip

지금까지 우분투 리눅스 환경에서 zip 명령어를 활용해 파일을 압축하고 해제하는 다양한 실무 활용법을 간단하게 살펴보았습니다.
오늘 정리해 드린 필수 옵션들을 잘 활용하셔서 터미널 환경에서 더욱 효율적으로 파일 작업을 진행해 보시기 바랍니다.