리눅스 zip 파일 압축 풀기

가장 널리 사용하는 압축 파일 포맷인 zip은 여러 개의 파일을 하나의 파일로 묶어서 전송하기 위한 용도로 사용하는 등 단순히 파일의 용량을 줄이는 용도 말고도 여러가지 파일 전송 수단으로 사용되고 있습니다.

이글에서는 리눅스 환경에서 다운로드 받거나 전송받은 zip 파일의 압축을 해제하는 여러가지 방법들에 대해서 안내합니다.

unzip 설치

리눅스에서 zip 파일 압축을 푸는 프로그램은 unzip이며 패키지로 배포되고 있습니다. 먼저 패키지를 설치합니다.

sudo apt install unzip

CentOS는 yum 패키지 관리자로 설치합니다.

sudo yum install unzip

zip 파일 압축 풀기

zip 파일의 압축을 풀 때는 다음 커맨드를 사용합니다. 압축 파일이 있는 경로와 같은 위치에 압축 파일(들)이 해제됩니다.

unzip data.zip

unzip 커맨드를 사용해서 zip 파일 압축을 풀면 압축이 풀려서 생성되는 모든 파일의 목록이 출력됩니다. 목록을 출력하지 않으려면 "-q" 옵션을 사용합니다.

unzip -q data.zip

다른 디렉토리에 압축 풀기

압축 파일을 해제하면 기본적으로 압축파일이 있는 디렉토리에 압축이 풀립니다. 압축이 풀리는 파일들이 위치할 디렉토리를 바꾸려면 "-d" 옵션을 사용해 타겟 디렉토리를 표시합니다.

unzip data.zip -d /var/www/apost

패스워드로 암호화 된 zip 파일 압축 해제

패스워드로 암호화 된 zip 파일은 "-P" 옵션으로 압축 파일의 패스워드를 입력해서 압축을 해제할 수 있습니다.

unzip -P zIpPassWorD data.zip

파일을 압축 해제에서 제외하기

압축 파일 안의 파일들 중 해제할 필요가 없거나 용량이 너무 커서 제외할 파일들 "-x" 옵션으로 표시해서 압축에서 제외할 수 있습니다. 여러 개의 파일을 해제에서 제외하려면 공백으로 띄워서 파일 이름을 나열하면 됩니다.

제외할 파일을 와일드 카드를 사용해서 필터링 조건에 해당하는 파일들을 모두 제외할 수도 있습니다. *.tmp 로 제외할 파일을 표시하면 tmp 확장자를 가진 파일은 모두 해제에서 제외됩니다.

unzip data.zip -x imgs.thumb *.tmp

압축 해제 파일을 덮어쓰기

압축 파일을 해제할 때 같은 파일이 있으면 다음처럼 파일을 덮어쓰는 사용자 선택을 요청합니다.

unzip data.zip -d unzipped
Archive:  data.zip
replace unzipped/alternatives.log? [y]es, [n]o, [A]ll, [N]one, [r]ename:

덮어쓸지 여부를 일일이 확인하고 싶지 않고 그냥 덮어쓰고 싶을 때는 "-o" 옵션을 사용합니다.

unzip -o data.zip

반대로 기존에 있는 파일들은 덮어쓰지 않고 없는 파일만 압축을 풀려면 "-n" 옵션을 사용하면 대상 디렉토리에 없는 파일만 압축파일에서 해제합니다.

unzip -n data.zip

여러 개의 zip 파일 압축을 풀기

와일드 카드 문자를 사용해서 여러 개의 압축 파일을 한꺼번에 압축 해제할 수 있습니다.

와일드 카드를 사용할 때는 따옴표나, 쌍따옴표를 사용해서 파일 이름을 감싸야 합니다. 감싸지 않으면 와일드카드 문자 자체를 파일 이름으로 인식합니다.

unzip -n "*.zip" -d unzipped
Archive:  20240326-backup.zip
  inflating: unzipped/auth.log.1
  inflating: unzipped/kern.log.1
  inflating: unzipped/syslog.1
  inflating: unzipped/ufw.log.1

Archive:  20240325-backup.zip

2 archives were successfully processed.

zip 파일 내용 확인하기

압축을 해제하기 전에 압축 파일에 어떤 파일들이 포함되어 있는지 자세한 정보를 확인하고 싶으면 "-l" 옵션을 사용합니다. 디렉토리 목록을 보는 것과 유사하게 압축 파일 안의 파일 목록을 콘솔에 표시해줍니다.

파일 목록 정보에는 파일 크기, 파일 최종 수정 날짜, 파일 개수, 압축 전 전체 파일들의 크기 합계가 표시됩니다.

unzip -l 20240325-backup.zip
Archive:  20240325-backup.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    11527  2024-03-23 18:06   alternatives.log
    31900  2024-03-25 22:17   auth.log
   166558  2024-03-23 23:39   auth.log.1
     6500  2024-03-16 23:39   auth.log.2.gz
    25595  2024-03-23 16:31   cloud-init-output.log
   509496  2024-03-23 16:31   cloud-init.log
    42627  2024-03-23 01:44   dmesg.0
    12629  2024-03-23 01:38   dmesg.1.gz
    12637  2024-03-23 01:19   dmesg.2.gz
    12625  2024-03-23 01:08   dmesg.3.gz
    12624  2024-03-14 02:19   dmesg.4.gz
   131924  2024-03-25 21:51   dpkg.log
   308147  2024-03-25 22:21   kern.log
  1247258  2024-03-23 23:59   kern.log.1
    67158  2024-03-16 23:59   kern.log.2.gz
  1791982  2024-03-24 00:00   syslog.1
   106391  2024-03-17 00:00   syslog.2.gz
    56192  2024-03-25 11:21   ubuntu-advantage.log
   306221  2024-03-25 22:21   ufw.log
  1000739  2024-03-23 23:59   ufw.log.1
    42234  2024-03-16 23:59   ufw.log.2.gz
---------                     -------
  5902964                     21 files