Linux에서 Gzip으로 파일을 압축 해제하는 방법

게시 됨: 2022-06-28
빨간색 배경에 Linux 터미널입니다.
Fatmawati achmad zaenuri/Shutterstock.com

많은 파일 압축 유틸리티가 있지만 모든 Linux 배포판에서 찾을 수 있는 것은 gzip 입니다. 하나의 압축 도구만 사용하는 방법을 배운 경우 gzip 이어야 합니다.

관련: 파일 압축은 어떻게 작동합니까?

알고리즘과 트리

gzip 데이터 압축 도구는 1990년대 초에 작성되었으며 여전히 모든 Linux 배포판에 있습니다. 사용할 수 있는 다른 압축 도구가 있지만 작업해야 하는 Linux 컴퓨터에 관계없이 gzip 을 찾을 수 있습니다. 따라서 gzip 을 사용하는 방법을 알고 있다면 아무 것도 설치할 필요 없이 사용할 수 있습니다.

gzip 은 PKZIP으로 유명한 Phil Katz가 발명하고 특허를 받은 DEFLATE 알고리즘의 구현입니다. DEFLATE 알고리즘은 모두 테마의 변형에서 작동하는 이전 압축 알고리즘에서 개선되었습니다. 압축할 데이터를 스캔하고 고유한 문자열을 식별하여 이진 트리에 추가합니다.

고유한 문자열은 트리에서의 위치에 따라 고유한 ID 토큰이 할당됩니다. 토큰은 데이터의 문자열을 교체하는 데 사용되며 토큰이 교체된 데이터보다 작기 때문에 파일이 압축됩니다. 원래 문자열을 토큰으로 대체하면 데이터가 압축되지 않은 상태로 다시 팽창됩니다.

벤치마킹: 최고의 파일 압축 형식은 무엇입니까?
관련 벤치마크: 최고의 파일 압축 형식은 무엇입니까?

DEFLATE 알고리즘은 가장 자주 발생하는 문자열에 가장 작은 토큰을 할당하고 가장 적게 발생하는 문자열에 더 큰 토큰을 할당하는 트위스트를 추가했습니다. DEFLATE 알고리즘은 또한 두 가지 초기 압축 방법인 Huffman 코딩과 LZ77 압축의 아이디어를 통합했습니다.

작성 당시 DEFLATE 알고리즘은 거의 30년이 되었습니다. 30년 전에는 데이터 저장 비용이 높았고 전송 속도가 느렸습니다. 데이터 압축은 매우 중요했습니다.

Linux에서 디스크 공간을 확보하는 4가지 방법
관련 Linux에서 디스크 공간을 확보하는 4가지 방법

오늘날 데이터 스토리지는 훨씬 저렴하고 전송 속도는 훨씬 더 빠릅니다. 그러나 저장할 데이터가 훨씬 더 많고 전 세계 사람들이 클라우드 스토리지 및 스트리밍 서비스에 액세스하고 있습니다. 데이터 압축은 업로드 또는 전송해야 할 항목을 줄이는 것뿐이거나 로컬 하드 드라이브의 일부 공간을 회수하려는 경우에도 여전히 매우 중요합니다.

gzip 명령

파일이 클수록 압축이 더 잘 될 수 있습니다. 이것은 두 가지 이유 때문입니다. 하나는 큰 파일 전체에 반복되고 동일한 바이트 시퀀스가 ​​많이 있다는 것입니다. 두 번째 이유는 압축 해제가 수행될 수 있도록 문자열 및 토큰 목록을 압축 파일에 저장해야 하기 때문입니다. 오버헤드가 압축의 이점을 없앨 수 있는 매우 작은 파일을 사용합니다. 그러나 상당히 작은 파일의 경우에도 크기가 약간 줄어들 가능성이 있습니다.

파일 압축

파일을 압축하려면 파일 이름을 gzip 명령에 전달하기만 하면 됩니다. 파일의 원본 크기를 확인하고 압축한 다음 압축된 파일의 크기를 확인합니다.

 ls -lh 계산 시트.ods
 gzip calc-sheet.ods
 ls -lh cal-* 

스프레드시트 압축

원본 파일인 "calc-sheet.ods"라는 스프레드시트는 11KB이고 압축 파일(아카이브 파일이라고도 함)은 9.3KB입니다. 아카이브 파일 이름은 ".gz"가 추가된 원본 파일 이름입니다.

ls 명령의 첫 번째 사용은 특정 파일인 스프레드시트를 대상으로 합니다. ls 의 두 번째 사용은 "calc-"로 시작하는 모든 파일을 검색하지만 압축된 파일만 찾습니다. 기본적으로 gzip 은 아카이브 파일을 생성하고 원본 파일을 삭제하기 때문입니다.

그건 문제가 아닙니다. 원본 파일이 필요한 경우 아카이브 파일에서 검색할 수 있습니다. 그러나 원본 파일을 유지하려는 경우 -k (유지) 옵션을 사용할 수 있습니다.

 gzip -k calc-sheet.ods
 ls -lh 계산 시트.* 

파일 압축 및 원본 파일 유지

이번에는 원본 ODS 파일이 유지됩니다.

파일 압축 풀기

GZ 아카이브 파일의 압축을 풀려면 -d (압축 해제) 옵션을 사용합니다. 이렇게 하면 아카이브에서 압축 파일을 추출하고 원본 파일과 구별할 수 없도록 압축을 풉니다.

 ls 계산 시트.*
 gzip -d calc-sheet.ods.gz
 ls 계산 시트.* 

gzip으로 파일 압축 풀기

이번에는 gzip 이 원본 파일을 추출한 후 아카이브 파일을 삭제한 것을 볼 수 있습니다. 아카이브 파일을 유지하려면 -k (유지) 옵션과 -d (압축 해제) 옵션을 다시 사용해야 합니다.

 ls 계산 시트.*
 gzip -d calc-sheet.ods.gz
 ls 계산 시트.* 

파일 압축 해제 및 아카이브 파일 유지

이번에는 gzip이 아카이브 파일을 삭제하지 않습니다.

관련: 삭제된 파일을 복구할 수 있는 이유 및 방지 방법

압축 풀기 및 덮어쓰기

원본 파일 또는 동일한 파일이 있는 다른 파일이 있는 디렉토리에서 파일을 추출하려고 하면 gzip 에서 추출을 중단할지 아니면 기존 파일을 덮어쓸지 선택하라는 메시지가 표시됩니다.

 gzip -d 텍스트 파일.txt.gz 

아카이브의 파일이 디렉토리에 이미 있는 경우 gzip에서 프롬프트를 덮어씁니다.

아카이브의 파일이 디렉토리의 파일을 덮어쓰게 하는 것이 좋다는 것을 미리 알고 있다면 -f(강제) 옵션을 사용하십시오.

 gzip -df 텍스트 파일.txt.gz 

기존 파일을 강제로 덮어쓰기

파일을 덮어쓰고 자동으로 명령줄로 돌아갑니다.

디렉토리 트리 압축

-r (재귀) 옵션은 gzip 이 전체 디렉토리 트리의 파일을 압축하도록 합니다. 그러나 결과는 예상한 것과 다를 수 있습니다.

다음은 이 예에서 사용할 디렉토리 트리입니다. 디렉토리에는 각각 텍스트 파일이 있습니다.

 트리 레벨1 

테스트 디렉토리 트리 구조

디렉토리 트리에서 gzip 을 사용하고 어떤 일이 일어나는지 봅시다.

 gzip -r 레벨1/
 트리 레벨1 

gzip을 실행한 후의 디렉토리 구조

결과는 gzip 이 디렉토리 구조의 각 텍스트 파일에 대한 아카이브 파일을 생성했다는 것입니다. 전체 디렉토리 트리의 아카이브를 만들지 않았습니다. 사실, gzip 은 아카이브에 하나의 파일만 넣을 수 있습니다.

디렉토리 트리와 모든 파일을 포함하는 아카이브 파일을 만들 수 있지만 다른 명령을 실행해야 합니다. tar 프로그램은 많은 파일의 아카이브를 만드는 데 사용되지만 자체 압축 루틴이 없습니다. 그러나 tar 와 함께 적절한 옵션을 사용하면 targzip 을 통해 아카이브 파일을 푸시하도록 할 수 있습니다. 그런 식으로 압축된 아카이브 파일과 다중 파일 또는 다중 디렉토리 아카이브를 얻습니다.

 tar -czvf level1.tar.gz level1

tar 옵션은 다음과 같습니다.

  • c : 아카이브를 생성합니다.
  • z : gzip 을 통해 파일을 푸시합니다.
  • v : 상세 모드. 터미널 창에서 tar 가 무엇인지 인쇄하십시오.
  • f level1.tar.gz : 아카이브 파일에 사용할 파일명.

디렉토리 트리를 통해 작업하는 tar의 출력

이것은 디렉토리 트리 구조와 디렉토리 트리 내의 모든 파일을 아카이브합니다.

관련: Linux에서 tar 명령을 사용하여 파일을 압축하고 추출하는 방법

아카이브에 대한 정보 얻기

-l (목록) 옵션은 아카이브 파일에 대한 일부 정보를 제공합니다. 아카이브에 있는 파일의 압축 및 비압축 크기, 압축 비율 및 파일 이름을 보여줍니다.

 gzip -l lev1.tar.gz
 gzip -l 텍스트 파일.txt.gz 

-l list 옵션을 사용하여 아카이브에 대한 압축 통계 보기

-t (테스트) 옵션을 사용하여 아카이브 파일의 무결성을 확인할 수 있습니다.

 gzip -t level1.tar.gz 

-t 옵션을 사용하여 아카이브 테스트

모든 것이 정상이면 자동으로 명령줄로 돌아갑니다. 소식이 없으면 좋은 소식입니다.

아카이브가 손상되었거나 아카이브가 아닌 경우 이에 대해 알려줍니다.

 gzip -t not-an-archive.gz 

-t 옵션을 사용하여 아카이브가 아닌 파일 테스트

속도 대 압축

아카이브 생성 속도 또는 압축 정도의 우선 순위를 선택할 수 있습니다. -1 부터 top -9 까지의 숫자를 옵션으로 제공하면 됩니다. -1 옵션은 압축을 희생하면서 가장 빠른 속도를 제공하고 -9 는 속도를 희생하면서 가장 높은 압축을 제공합니다.

이러한 옵션 중 하나를 제공하지 않는 한 gzip은 -6 을 사용합니다.

 gzip -1 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -9 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -6 calc-sheet.ods
 ls -lh calc-sheet.ods.gz 

속도 및 압축에 대해 다른 우선 순위로 gzip 사용

이 정도의 작은 파일에서는 실행 속도에서 큰 차이를 보이지 않았지만 압축에서는 약간의 차이가 있었습니다.

흥미롭게도 레벨 9 압축을 사용하는 것과 레벨 6 압축을 사용하는 것 사이에는 차이가 없습니다. 주어진 파일에서 너무 많은 압축만 짜낼 수 있으며 이 경우에는 해당 제한이 레벨 6 압축에 도달했습니다. 9까지 올려도 파일 크기가 더 이상 줄어들지 않았습니다. 파일이 클수록 레벨 6과 레벨 9의 차이가 더 두드러집니다.

압축, 보호되지 않음

압축을 암호화나 어떤 형태의 보호로 착각하지 마십시오. 파일을 압축해도 보안이나 개인 정보 보호가 강화되지 않습니다. 파일에 액세스할 수 있는 사람은 누구나 gzip 을 사용하여 압축을 풀 수 있습니다.

관련: Linux에서 가장 큰 10개의 파일 또는 디렉터리 나열