Linux 터미널에서 파일을 압축하거나 압축을 푸는 방법

ZIP 파일은 Windows, macOS 및 심지어 Linux 시스템에서 일반적으로 사용되는 범용 아카이브입니다. 몇 가지 일반적인 Linux 터미널 명령을 사용하여 zip 아카이브를 만들거나 파일을 압축 해제 할 수 있습니다.

ZIP 압축 아카이브 파일 형식

Windows 영역에서 ZIP 형식이 우세한 덕분에 ZIP 파일은 아마도 세계에서 가장 일반적인 압축 아카이브 형식 일 것입니다.

.tar.gz 및 tar.bz2 파일은 Linux에서 일반적이지만 Windows 사용자는 ZIP 형식으로 아카이브를 보낼 것입니다. 또한 일부 파일을 보관하여 Windows 사용자에게 보내려는 경우 ZIP 형식이 모든 사람에게 가장 쉽고 호환 가능한 솔루션이 될 것입니다.

관련 : Linux에서 .tar.gz 또는 .tar.bz2 파일에서 파일을 추출하는 방법

zip, unzip 및 기타 유틸리티

당신은 이미 맥 OS 리눅스 및 운영 유닉스 계열 시스템은 당신이 그들로부터 호출 ZIP 파일 및 추출 파일을 생성 할 수 있도록 도구를 가지고 있음을 알 수있다 zipunzip. 그러나 같은 관련 유틸리티의 온 가족이있다 zipcloak, zipdetails, zipsplit,와 zipinfo.

일부 Linux 배포판이 표준 설치에 이러한 유틸리티가 포함되어 있는지 확인했습니다. 모든 유틸리티는 Ubuntu 19.04, 18.10 및 18.04에있었습니다. Manjaro 18.04에도 등장했습니다. Fedora 29에는 zip및이 포함되어 unzip있지만 다른 유틸리티는 없으며 CentOS의 경우도 마찬가지입니다.

Fedora 29에 누락 된 요소를 설치하려면 다음 명령을 사용하십시오.

sudo dnf 설치 perl-IO-Compress

CentOS 7에 누락 된 요소를 설치하려면 다음 명령을 사용하십시오.

sudo yum 설치 perl-IO-Compress

위에서 언급하지 않은 Linux 배포판에서 zip 유틸리티가 누락 된 경우 해당 Linux 배포판의 패키지 관리 도구를 사용하여 필요한 패키지를 설치하십시오.

zip 명령을 사용하여 ZIP 파일을 만드는 방법

ZIP 파일을 생성하려면 zip아카이브 파일의 이름과 포함 할 파일을 알려야 합니다. 아카이브 이름에 ".zip"확장자를 추가 할 필요는 없지만 그렇게해도 아무런 문제가 없습니다.

source_code.zip현재 디렉토리에있는 모든 C 소스 코드 파일과 헤더 파일을 포함하는 라는 파일을 만들려면 다음 명령을 사용합니다.

zip source_code * .c * .h

각 파일은 추가 된대로 나열됩니다. 파일 이름과 해당 파일에 대해 달성 된 압축 정도가 표시됩니다.

새 ZIP 아카이브를 살펴보면 ".zip"파일 확장자가에 의해 자동으로 추가되었음을 알 수 있습니다 zip.

ls -l source_code.zip

zipZIP 파일이 생성 될 때 출력을 보지 않으려면 -q(자동) 옵션을 사용하십시오 .

zip -q 소스 코드 * .c * .h

ZIP 파일에 디렉토리 포함

ZIP 파일에 하위 디렉터리를 포함하려면 -r(반복) 옵션을 사용하고 명령 줄에 하위 디렉터리의 이름을 포함합니다. 이전과 같이 ZIP 파일을 생성하고 아카이브 하위 디렉토리도 포함하려면이 명령을 사용합니다.

zip -r -q 소스 코드 아카이브 / * .c * .h

생성중인 ZIP 파일에서 파일을 추출 할 사람을 배려하기 위해 디렉토리에 포함 된 파일이 포함 된 ZIP 파일을 만드는 것이 예의입니다. ZIP 파일을받은 사람이 압축을 풀면 모든 파일이 컴퓨터의 디렉터리 내에 깔끔하게 배치됩니다.

다음 명령에서 work디렉터리와 모든 하위 디렉터리 를 보관할 것 입니다. 이 명령이에서 발행되고 있음을 참고 상위 디렉토리work폴더.

zip -r -q source_code 작업 /

압축 수준 설정

ZIP 아카이브에 추가 될 때 파일에 적용되는 압축 정도를 설정할 수 있습니다. 범위는 0에서 9까지이며 0은 전혀 압축되지 않습니다. 압축률이 높을수록 ZIP 파일을 만드는 데 더 오래 걸립니다. 적당한 크기의 ZIP 파일의 경우 시간 차이가 큰 불이익이 아닙니다. 그러나 적당한 크기의 ZIP 파일의 경우 기본 압축 (레벨 6)으로 충분할 것입니다.

zip특정 수준의 압축을 사용 하려면 다음 과 같이 "-"를 사용하여 명령 줄에서 옵션으로 번호를 전달합니다.

zip -0 -r -q source_code 작업 /

기본 압축 수준은 6입니다. -6옵션 을 제공 할 필요는 없지만 그렇게해도 해를 끼치 지 않습니다.

zip -r -q source_code 작업 /

최대 압축 수준은 수준 9입니다.

zip -9 -r -q source_code 작업 /

여기에서 아카이브 할 파일 및 디렉토리를 선택하면 압축 안 함 (레벨 0)과 기본 압축 (레벨 6)의 차이는 400K입니다. 기본 압축과 최고 압축 수준 (수준 9)의 차이는 4K에 불과합니다.

별로 보이지 않을 수도 있지만 수백 또는 수천 개의 파일을 포함하는 아카이브의 경우 파일 당 적은 양의 추가 압축으로 인해 상당한 공간 절약 효과를 얻을 수 있습니다.

ZIP 파일에 비밀번호 추가

ZIP 파일에 암호를 추가하는 것은 쉽습니다. -e(암호화) 옵션을 사용하면 암호를 입력하고 확인을 위해 다시 입력하라는 메시지가 표시됩니다.

zip -e -r -q source_code 작업 /

unzip 명령을 사용하여 ZIP 파일의 압축을 푸는 방법

ZIP 파일에서 파일을 추출하려면 unzip 명령을 사용하고 ZIP 파일의 이름을 제공하십시오. 참고는 은 ".ZIP"확장자를 제공해야합니다.

source_code.zip 압축 해제

파일이 추출되면 터미널 창에 나열됩니다.

ZIP 파일에는 파일 소유권에 대한 세부 정보가 없습니다. 추출 된 모든 파일의 소유자는 추출하는 사용자로 설정됩니다.

마찬가지로 zip, unzip 가 -q당신이 파일이 추출로 나열하는 파일을 참조 할 필요가 없습니다 그래서, (자동) 옵션을 선택합니다.

압축 해제 -q source_code.zip

대상 디렉토리로 파일 추출

특정 디렉토리에서 파일을 추출하려면 -d(디렉토리) 옵션을 사용 하고 아카이브를 추출 할 디렉토리 경로를 제공하십시오.

unzip -q source_code.zip -d ./development

암호로 보호 된 ZIP 파일 추출

ZIP 파일이 비밀번호로 생성 된 경우에서 비밀번호 unzip를 묻습니다. 올바른 암호를 제공하지 않으면  unzip파일이 추출되지 않습니다.

압축 해제 -q source_code.zip

암호가 다른 사람에게 표시되거나 명령 기록에 저장되는 것을 신경 쓰지 않는 경우 -P(password) 옵션 을 사용하여 명령 줄에 암호를 제공 할 수 있습니다 . (대문자 "P"를 사용해야합니다.)

압축 해제 -P fifty.treacle.cutlass -q source_code.zip

파일 제외

특정 파일 또는 파일 그룹을 추출하지 않으려면 -x(제외) 옵션을 사용하십시오 . 이 예에서는 ".h"확장자로 끝나는 파일을 제외한 모든 파일을 추출하려고합니다.

압축 해제 -q source_code.zip -x * .h

파일 덮어 쓰기

아카이브를 추출했지만 실수로 추출 된 파일 중 일부를 삭제했다고 가정합니다.

이에 대한 빠른 수정은 파일을 다시 추출하는 것입니다. 그러나 이전과 동일한 디렉토리에서 ZIP 파일을 추출하려고하면 unzip에서 파일 덮어 쓰기에 대한 결정을 요청합니다. 다음 응답 중 하나가 예상됩니다.

r(이름 바꾸기) 응답과 별도로 이러한 응답은 대소 문자를 구분합니다.

  • y : 예,이 파일을 덮어 씁니다.
  • n : 아니요,이 파일을 덮어 쓰지 마십시오.
  • A : 모두, 모든 파일을 덮어 씁니다.
  • N : 없음, 파일을 덮어 쓰지 않음
  • r : 이름을 바꾸고이 파일을 추출하되 새 이름을 지정하십시오. 새 이름을 입력하라는 메시지가 표시됩니다.

unzip기존 파일 을 강제 로 덮어 쓰 려면 -o(덮어 쓰기) 옵션을 사용하십시오 .

압축 해제 -o -q source_code.zip

누락 된 파일을 대체하는 가장 효율적인 방법 은 대상 디렉토리에 없는unzip 아카이브의 파일 만 추출하는 것 입니다. 이렇게하려면 (덮어 쓰지 않음) 옵션을 사용하십시오 .-n

압축 해제 -n source_code.zip

ZIP 파일 내부보기

압축을 풀기 전에 ZIP 파일 내의 파일 목록을 보는 것이 유용하고 유익한 경우가 많습니다. -l(목록 아카이브) 옵션을 사용하여이를 수행 할 수 있습니다 . less출력을 관리 할 수 ​​있도록 파이프로 연결됩니다 .

unzip -l source_code.zip | 적게

출력에는 ZIP 파일 내의 디렉토리와 파일, 파일의 길이, 아카이브에 추가 된 시간 및 날짜가 표시됩니다. 에서 종료하려면 "q"를 누릅니다 less.

우리가 보게 될 다양한 유형의 정보를 제공하는 ZIP 파일 내부를 들여다 보는 다른 방법이 있습니다.

zipcloak 명령으로 암호 추가

ZIP 파일을 생성했지만 암호를 추가하는 것을 잊은 경우 어떻게 할 수 있습니까? zipcloak명령을 사용하여 ZIP 파일에 암호를 빠르게 추가 할 수 있습니다 . 명령 줄에 ZIP 파일의 이름을 전달합니다. 암호를 입력하라는 메시지가 표시됩니다. 암호를 다시 입력하여 확인해야합니다.

zipcloak source_code.zip

zipdetails 명령을 사용하여 파일 세부 정보보기

zipdetails명령은 ZIP 파일에 관한 많은 정보를 보여줍니다 . 이 명령이 제공 할 수있는 출력의 양을 처리 할 수있는 유일한 방법은 파이프를 통해 파이프하는 것 less입니다.

zipdetails source_code.zip | 적게

ZIP 파일이 암호로 보호 된 경우에도 정보에는 파일 이름이 포함됩니다. 이러한 유형의 정보는 ZIP 파일에 메타 데이터로 저장되며 암호화 된 데이터의 일부가 아닙니다.

zipgrep 명령을 사용하여 파일 내부 검색

zipgrep명령을 사용하면 ZIP 파일 의 파일 내에서 검색 할 수 있습니다 . 다음 예에서는 ZIP 파일에서 "keyval.h"라는 텍스트가있는 파일을 알고 싶습니다.

zipgrep keyval.h source_code.zip

파일 slang.cgetval.c문자열 "keyval.h"가 포함되어 있음을 확인할 수 있습니다. 또한 ZIP 파일의 서로 다른 디렉토리에 이러한 파일 각각의 복사본이 두 개 있음을 확인할 수 있습니다.

zipinfo 명령으로 정보보기

zipinfo명령은 ZIP 파일 내부를 볼 수있는 또 다른 방법을 제공합니다. 이전과 마찬가지로 출력을 less.

zipinfo source_code.zip | 적게

왼쪽에서 오른쪽으로 출력에 다음이 표시됩니다.

  • 파일 권한
  • ZIP 파일을 만드는 데 사용 된 도구의 버전
  • 원래 파일 크기
  • 파일 설명자 (아래 설명)
  • 압축 방법 (이 경우 수축)
  • 데이터 및 타임 스탬프
  • 파일 및 디렉토리의 이름

파일 설명자는 두 문자로 구성됩니다. 첫 번째 문자는 텍스트 또는 바이너리 파일을 나타내는 "t"또는 "b"입니다. 대문자이면 파일이 암호화됩니다. 두 번째 문자는 4 개의 문자 중 하나 일 수 있습니다. 이 문자는이 파일에 포함 된 메타 데이터 유형 (없음, 확장 된 로컬 헤더, "추가 필드"또는 둘 다)을 나타냅니다.

  • -: 둘 다 존재하지 않는 경우 문자는 하이픈이됩니다.
  • l : 확장 된 로컬 헤더가 있지만 추가 필드가없는 경우
  • x : 확장 된 로컬 헤더가 없지만 추가 필드가있는 경우
  • X : 확장 된 로컬 헤더가 있고 추가 필드가있는 경우

zipsplit 명령으로 파일 분할

ZIP 파일을 다른 사람에게 보내야하지만 크기 제한이나 파일 전송에 문제가있는 경우 zipsplit명령을 사용 하여 원본 ZIP 파일을 더 작은 ZIP 파일 집합으로 분할 할 수 있습니다 .

-n(크기) 옵션을 사용하면 새로운 ZIP 파일 각각에 대해 최대 크기를 설정할 수 있습니다. 이 예에서는 source_code.zip파일을 분할 합니다. 새 ZIP 파일이 100KB (102400 바이트)보다 크지 않기를 바랍니다.

zipsplit -n 102400 source_code.zip

선택한 크기는 ZIP 파일에있는 파일의 크기보다 작을 수 없습니다.

이러한 명령을 사용하면 Linux 터미널을 떠나지 않고도 자신 만의 ZIP 파일을 만들고받은 ZIP 파일의 압축을 풀고 다양한 작업을 수행 할 수 있습니다.