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

0
322

빨간색 배경에 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 calc-sheet.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 calc-sheet.*

파일 압축 및 원본 파일 유지

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

파일 압축 풀기

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

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

gzip으로 파일 압축 풀기

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

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

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

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

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

압축 풀기 및 덮어쓰기

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

gzip -d text-file.txt.gz

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

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

gzip -df text-file.txt.gz

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

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

디렉토리 트리 압축

그만큼 -r (재귀) 옵션 원인 gzip 전체 디렉토리 트리에서 파일을 압축합니다. 그러나 결과는 예상한 것과 다를 수 있습니다.

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

tree level1

테스트 디렉토리 트리 구조

사용하자 gzip 디렉토리 트리에서 어떤 일이 일어나는지 보십시오.

gzip -r level1/
tree level1

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

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

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

tar -czvf level1.tar.gz level1

그만큼 tar 옵션은 다음과 같습니다.

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

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

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

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

아카이브에 대한 정보 얻기

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

gzip -l leve1.tar.gz
gzip -l text-file.txt.gz

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

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

gzip -t level1.tar.gz

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

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

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

gzip -t not-an-archive.gz

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

속도 대 압축

아카이브 생성 속도 또는 압축 정도의 우선 순위를 선택할 수 있습니다. 다음에서 옵션으로 번호를 제공하여 이 작업을 수행합니다. -1 상단을 통해 -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개의 파일 또는 디렉터리 나열