IT/Linux

리눅스 ZIP 파일 압축 및 해제(zip/unzip)

psychoria 2021. 2. 23. 14:30
반응형

ZIP은 가장 가장 흔하게 볼 수 있는 압축 파일입니다.

ZIP은 여러 파일을 하나의 파일로 묶어주고(Archiving) 무손실 압축(Compression)을 지원합니다.

리눅스 환경에서도 ZIP 파일로 압축하거나 압축된 ZIP 파일을 해제해야 하는 상황이 발생합니다.

리눅스 환경에서 ZIP 파일을 다루는 방법을 알아보겠습니다.

 

1. ZIP 패키지 설치

리눅스는 기본적으로 ZIP이 설치되지 않은 상태일 수 있습니다.

데비안이나 우분투 계열의 리눅스에서는 아래 명령어로 설치를 할 수 있습니다.

sudo apt install zip

CentOS나 페도라 계열의 리눅스에서는 yum 명령어로 설치가 가능합니다.

sudo yum install zip

설치를 완료하면 zip 명령어를 사용할 수 있게 됩니다.

 

2. ZIP 파일 압축

기본적으로 다음과 같이 압축을 원하는 파일들을 계속 추가해서 압축할 수 있습니다.

zip [압축파일명] [압축할 파일] [압축할 파일] ...

zip 이후에 생성할 압축 파일명을 입력하고 뒤에 압축할 파일들을 순서대로 입력하면 됩니다.

기본 zip 명령어

압축 파일명을 입력하고 뒤에 압축하고 싶은 파일들을 입력하면 파일들이 압축됩니다.

해당 디렉토리 내의 파일을 전부 압축하려면 다음과 같이 입력하면 됩니다.

zip [압축파일명] *

이 방법으로 압축할 경우 현재 디렉토리의 파일과 하위 디렉토리만 압축합니다.

실행 결과

하위 디렉토리에 위치한 파일들은 압축이 되지 않는 문제가 있습니다.

또한 .(마침표)로 시작되는 리눅스의 숨은 파일들이 포함되지 않습니다.

이 경우 -r 옵션을 통해 하위 디렉토리의 파일을 포함해서 압축할 수 있습니다.

아래 명령어를 실행하면 해당 디렉토리의 하위 디렉토리 내용들과 숨은 파일을 포함한 모든 파일을 압축합니다.

zip -r [압축파일명] .

보통은 디렉토리 전체를 압축하는 경우가 많기 때문에 위 명령어를 사용해서 압축하면 됩니다.

실행 결과

하위 디렉토리 내의 1.txt 파일(inner/1.txt)과 숨겨진 파일(.hidden) 파일이 포함되는 것을 확인할 수 있습니다.

그 외에 유용한 zip 명령어의 옵션은 다음과 같습니다.

-0 ~ -9 압축 레벨 (기본: -6, 무압축: -0, 최고레벨 압축: -9)
-e 압축 파일에 암호 적용
-s 분할 압축 (예: -s 1m) (k: kilobytes, m: megabytes, g: gigabytes, t: terabytes)
-q 메시지 출력 제한

암호를 설정하거나 압축 레벨을 낮추거나 높이고 싶을 때 옵션을 추가하면 됩니다.

또한 분할 압축을 사용해야 하는 경우 -s 1g (1기가바이트로 분할 압축) 등의 명령어를 사용하면 됩니다.

 

3. ZIP 파일 압축 풀기

현재 디렉토리에 압축을 해제하려면 간단하게 아래 명령어로 가능합니다.

unzip [압축파일명]

특정 디렉토리에 압축을 풀고 싶으면 -d 옵션 이후에 압축 해제를 원하는 디렉토리를 추가하면 됩니다.

unzip [압축파일명] -d /home/username

기본적으로 암호화 압축된 파일은 압축 해제시 물어보지만 -P 옵션으로 미리 입력하는 것도 가능합니다.

unzip -P 비밀번호 [압축파일명]

또한 이미 파일이 존재할 때 덮어쓸 것인지(-o) 무시할 것인지(-n)를 설정하는 것도 가능합니다.

이 옵션들은 자동화 스크립트를 작성할 때 유용하게 사용될 수 있습니다.

위 옵션으로 ZIP 파일을 압축 해제가 가능합니다.

반응형