타르가없는 gzip? 왜 그들은 함께 사용됩니까?


56

타르 gzip 거의 항상 함께 사용되며 gzip이 아닌? 이 방법에 이점이 있습니까?

답변:


70

타르 여러 파일 중에서 하나의 아카이브 파일을 만들지 만 압축하지는 않습니다.

서식 세부 정보

tar 파일은 하나 이상의 파일을 연결 한 것입니다. 각 파일 앞에 512 바이트 헤더 레코드가옵니다. 파일 데이터는 길이가 512 바이트의 배수로 반올림되고 여분의 공간이 0으로 채워진다는 것을 제외하고는 변경되지 않고 기록됩니다. 아카이브의 끝은 최소 두 개의 연속 된 0으로 채워진 레코드로 표시됩니다.

GZIP 단일 파일을 다른 단일 파일로 압축하지만 아카이브는 생성하지 않습니다.

파일 형식

... 파일 형식이 여러 개의 스트림을 연결할 수도 있지만 (압축 된 파일은 원래 하나의 파일 인 것처럼 간단하게 압축 해제됩니다), gzip은 일반적으로 단일 파일을 압축하는 데 사용됩니다. [4] 압축 된 아카이브는 일반적으로 파일 모음을 단일 tar 아카이브에 모은 다음 gzip으로 압축합니다.


12
"tgz"파일과 같은 것은 없습니다. 그것은 tar.gz입니다. gzip 작업은 내용을 압축하거나 압축을 해제하는 것입니다 (이 경우 tar 아카이브). 그런 다음 tar로 압축을 해제합니다. 그것은 전형적인 유닉스 파이프 라인 철학이며, 따라서 거의 유일하지 않습니다.
luis.espinal

5
아니요 .tar.gz는 고유하지 않습니다. tar.bz2, .cpio.gz 등은 동일한 방식으로 작동합니다.
user46971

3
@ user36310 나는 원칙적으로 무엇을 의미하는지 알고 있지만 실제로는 도구를 사용하여 하나의 파일을 추출 할 수 있습니다. tar -xzvf tarball.tar.gz single/file.txt. 뒤에서는 약간의 추가 작업이 필요하지만 외모에서는 단일 파일을 추출합니다.
Rich Homolka

4
파일이 대용량 아카이브의 끝에 있으면 "많은 추가 작업"을하십시오. 분명히 임의 액세스가 필요한 경우 zip / rar / xar / 7z / lzh / arj / cab / sit 등이 더 우수한 형식입니다.
LaC

3
정확히 말하면, .tar.* 압축 된 아카이브는 항상 "솔리드"입니다. 하나의 압축 된 스트림으로 구성됩니다. 에이 .zip 반면에 압축 파일은 전혀 안정적이지 않습니다. 압축 알고리즘은 각 파일에 대해 새로 시작됩니다. 무작위 액세스 속도를 높이기 위해 압축 효율성을 희생합니다. .7z 아카이브는 견고하고 비 견고하거나 견고한 블록을 가질 수 있습니다.
Daniel B

17

Gzip / Bzip2는 스트림 압축기입니다. 그들은 데이터 스트림을 더 작은 것으로 압축합니다. 개별 파일에 사용할 수는 있지만 파일 그룹에는 사용할 수 없습니다.

반면에 Tar는 경로, 권한 및 소유권 정보가있는 파일 목록을 하나의 연속 된 스트림으로 변환 할 수 있으며 그 반대의 경우도 가능합니다.

그래서 파일을 보관하려면 (그리고 압축이 필요한 경우) 일반적으로 tar + 압축 방법을 사용합니다.


12

타르 (Tar)는 단 한가지 일을 잘 담당하고있다. 하나의 아카이브 파일에 아카이브한다. 어떤? 단 한가지 : a 세트 파일 수

Gzip은 단 한 가지 일을 잘 담당합니다. 압축합니다. 어떤? 한 가지만 한 가지 : 하나의 파일 어떤 유형의 ... 그리고 여기에는 tar로 만든 파일이 포함됩니다.

이것은 유닉스 철학 인 파이프 라이닝, 기본 "파이프 및 필터"아키텍처로 돌아갑니다. 모든 것을 하나의 파일로 취급하고 "one-thing-does-one-thing-only-and-does-it-well"이라는 사운드 아키텍처의 목표 (매우 우아하고 단순한 플러그 앤 플레이 방식 .)

그것의 단순함에서, 그것은 본질적으로 거의 대수적입니다 (시스템 설계에서 상당한 목표). 그리고 그건 쉬운 일이 아닙니다.

여러면에서 (결함이없는 것은 아니지만) 이것은 합성 가능성, 모듈성, 느슨한 결합 및 높은 응집도에서 거의 절정입니다. 이 네 가지를 이해한다면 (그리고 나는 정말로 이해하다 ), 왜 tar와 gzip이 쌍으로 작동하는지 분명해질 것입니다.


1
이 유닉스 철학은 아름답습니다.하지만 솔리드가 아닌 것으로 보입니다. (1 GB짜리 tar.gz에서 하나의 파일을 추출하는 것은 고통이 아니어야하며, 여기서 내가 이해 한 바에 따르면, ZIP은 tar.gz보다 훨씬 우월합니다 ... 맞습니까?)
Mehrdad

@ 메흐 라드 - 먼저 , 견고한 아카이브는 무엇입니까? 볼테르 (Voltaire) "당신이 나와 대화를 나눌 수 있다면, 우선 당신은 당신의 용어를 정의해야합니다." . 둘째 예, 파이프 및 필터 아키텍처는 아름다움에 관계없이 다른 아키텍처와 마찬가지로 특정 경우에 부족합니다. 그것은 공학의 소량으로 주어지며, 그것은 논쟁이되고 있지 않습니다. 제삼 , zip은 gzip과 tar보다 우월합니다. 그러나 그것은 여러분이 요구 한 것이 아닙니다. 왜 지퍼와 타르가 그들이하는 방식대로 작동하는지 그리고 어떤 이점이 있다면 기술 답변을 받았는지 질문했습니다.
luis.espinal

@ 메흐 라드 - 또한 1gig tar.gz 파일의 압축을 풀 때 어떤 종류의 문제가 발생하는지 알지 못합니다. 나는 gzip의 구형 설치 (gzip의 최신 버전에서는 최대 4GB)를 사용하여 최대 2GB까지 여러 번 수행했습니다. 유선 또는 NFS 마운트를 사용하는 경우 duh! 평범한 지퍼로 연주했을 때와 비슷한 퍼포먼스 문제가 발생합니다. 젠체, 파이프에서 gzip 입력을 소켓으로 뱉어내는 원격 프로세스까지도 해체했습니다. zip으로 시도해보십시오. 각 문제에 대해 적절한 도구를 사용하십시오 (tar | gz 또는 zip이어야합니다).
luis.espinal

8

우선, TAR이 생성되지 않았습니다. 파일 보관소. 그 테이프 ARchiver . 테이프에서 /로 아카이브에 기록하거나로드하는 것이 일입니다.

그만큼 -에프 옵션을 사용하면 파일을 "가상 테이프"로 사용하고 다른 프로그램에서 압축 할 수 있습니다. 실제로 이러한 압축은 실세계 테이프 드라이브에서도 발생합니다.

물론, 하나의 프로그램을 사용하는 철학이이 경우에도 중요하지만, TAR 아카이브가 컨텐츠 + 컨텐츠 디렉토리가 아닌 스트림으로 구성된 이유를 놓칠 수도 있습니다.


3
맞아 ... ZIP 파일은 모든 파일 정보를 통합 헤더에 넣은 다음 모든 파일 내용을 ... 불가능하게 만듭니다. 추가하다 더 많은 파일을 ZIP 파일로 ... 전체 파일을 다시 작성해야합니다 ... TAR 형식으로 각 파일의 헤더가 분리되므로 전체 테이프를 다시 작성하지 않고도 더 많은 파일을 쉽게 추가 할 수 있습니다
JoelFan

5

전통적으로 유닉스 시스템은 하나의 프로그램을 사용하여 유닉스 철학 : tar 원래 테이프 백업을 위해 여러 파일을 단일 파일로 패키지하기위한 수단이었습니다 (따라서 tar, 원숭이 ar 골파). tar 압축을 제공하지 않습니다. 결과 압축되지 않은 아카이브는 일반적으로 다음과 같은 다른 프로그램으로 압축됩니다. gzip, bzip2, 또는 xz. 옛날에, 그들은 compress 이것을하기위한 명령; 새로운 압축 알고리즘이 이것보다 훨씬 효과적입니다.

유닉스 철학에 의해 규정 된 고도로 모듈화 된 접근법은 각 프로그램이 적절하게 개별적으로 사용되거나 여기에 설명 된 압축 된 아카이브 생성을 포함하여 더 복잡한 작업을 수행하도록 결합 될 수 있음을 의미합니다. 이러한 종류의 작업을 위해 필요에 따라 개별 도구를 쉽게 교체 할 수 있습니다. 다른 압축 알고리즘을 사용하도록 압축 프로그램을 변경하면됩니다. tar 유틸리티 자체.

이러한 모듈 방식은 단점이 없습니다. 같이 말하는 다른 답변에 대한 의견, 전용 압축 아카이브 형식 .zip 개별 파일의 추출을보다 잘 처리 할 수 ​​있습니다. 압축 된 tarball은 아카이브의 끝 부분에서 파일을 추출하기 위해 거의 전체를 압축 해제해야하며 .zip 아카이브는 내용에 임의로 액세스 할 수 있습니다. (예 : .7z솔리드 및 비 솔리드 아카이브뿐만 아니라 더 큰 아카이브에서 다양한 크기의 솔리드 블록을 지원합니다.) tar 별도의 압축 유틸리티와 함께 ​​전통과 호환성의 문제입니다; 또한, .7z.zip 권한과 같은 유닉스 파일 시스템 메타 데이터를 지원하지 않는다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.