tar 또는 zip 압축 중 어느 쪽이 더 효율적입니까? tar와 zip의 차이점은 무엇입니까?


68

Linux 환경에서 일하고 있으며 tar 및 zip 명령에 대해 알고 싶습니다.

tar 또는 zip 중 어느 것이 더 효율적인가요? tar 명령과 zip 명령의 차이점을 알아야합니다. 누구든지 나에게 설명 할 수 있습니까?

답변:


77

tar여러 파일 중 하나의 파일 만 만들 gzip거나 또는 같은 압축 프로그램을 결합하지 않는 한 압축하지 않습니다 bzip2( 또는 옵션 tar을 사용하여 내부에서 호출 할 수 있음 ). 하나의 프로그램에서 아카이빙과 압축을 모두 결합합니다.-z-jzip


60

타르

  • 한쪽 끝에서 다른 쪽 끝까지 "Tape ARchive"를 읽는다고 가정합니다. (명령의 시대는 ...)
  • 압축하지는 않지만 gzip 및 bzip2 (예 : 내부적으로 -z 또는 -j로 수행)를 통해 전체 스트림을 압축하여 압축 할 수 있습니다.
  • 유닉스 파일 속성 : uid, gid, permissions (주로 실행 가능)를 저장합니다. 기본값은 배포판에 따라 달라질 수 있으며 옵션으로 전환 할 수 있습니다.

지퍼

  • MSDOS 속성을 저장합니다 . (아카이브, 읽기 전용, 숨겨진, 시스템)
  • 각 파일을 압축 한 다음 아카이브에 추가
  • 파일 끝에 파일 테이블을 포함
  • 전자의 결과로 필요한 파일에 대한 정확한 부분 만 읽을 수 있습니다.

zip이 파일을 개별적으로 압축한다는 사실은 압축 비율에 영향을 미치며, 특히 많은 작은 유사한 파일에 영향을 미칩니다.

(적어도 10 년 전에는 정확히 맞았습니다.)


22

Tar은 Zip보다 훨씬 더 많은 메타 데이터를 유지합니다. 비교를 참조하십시오 (약간 구식 임).

여기에 이미지 설명을 입력하십시오

(클릭하면 확대)

Tar은 테스트의 65 %를 통과하며 Zip은 17 % 만 통과합니다. BSD 라이센스로 github에서 테스트 스위트를 사용할 수 있도록 Mac이 있다면 직접 시도해 볼 수 있습니다. 리눅스의 경우 메타 데이터가 있는지 확실하지 않으므로 이러한 테스트와 관련이 없을 수 있습니다.


흥미 롭습니다! 이것을 위해 +1. 그러나 다시, 그것은 거대한 프로그램이었습니다. 다른 목적으로 이것을 쓰셨습니까? 그냥 궁금해서
CppLearner 2019 년

몇 년 전에 작업했던 파일 관리자에 대한 테스트를 작성했습니다. 그래도 공개하지 않았습니다.
neoneye

1
리눅스에도 메타 데이터가 있기 때문에 작동해야합니다.
zeitue

14

효율성은 다양한 방식으로 측정 할 수 있습니다.

  1. 프로세스에 시간이 얼마나 걸립니까?
  2. 결과 파일은 얼마나 큽니까?

"결과 아카이브를 조작하는 도구는 얼마나 일반적입니까?"와 같은 다른 질문도 있습니다.

예를 들어 bzip2보다 작은 파일을 gzip만들지 만 시간이 훨씬 오래 걸릴 수 있습니다. 또한 내 경험에 따르면 gzip유닉스 계열 시스템에서는 보편적이지만 bzip2여전히 일반적이지 않습니다 (매우 일반적이며 쉽게 얻을 수는 있지만).


3
7zip ( 7-zip.org )은 CPU 시간을 희생하여 탁월한 압축을 얻는 또 다른 좋은 옵션입니다. bzip2 (일반적으로 내가 아는 곳에서는 기본적으로 설치되지 않음)보다 덜 일반적이지만 대부분의 장소에 설치하기 쉽다 (대부분의 Linux 배포판의 표준 리포지토리에 있으며 Windows 용 간단한 설치 프로그램 패키지가 있습니다. tar + gzip처럼 여러 개의 작은 파일을 포함 할 때 입력 파일에 대한 압축 창을 통해 zip보다 훨씬 더 많은 비용 절감
David Spillett

3
효율성은 데이터를 얼마나 잘 보존 하느냐에 따라 측정 될 수 있습니다.이 질문에 대한 나의 대답을보십시오. 타르는 데이터를 보존 할 때 지퍼보다 훨씬 낫습니다.
neoneye

1
하나 더 많은 측정 coud는 UNIX 외부의 호환성입니다. Windows는 zip (Windows에 내장)에 적합하며 일반적으로 쉐어웨어를 사용하여 tar.gz를 쉽게 처리 할 수 ​​있지만 bzip2는 찾기 어렵습니다. 불행히도 Original Question은 이러한 기준을 언급하지 않았으므로 관련성이 있는지 알 수 없습니다.
Rich Homolka 3

1
나는 한때 일반적인 압축기에 필요한 압축비 대 시간에 대해 철저히 검토했으며, 공간과 시간을 어떻게 평가 하는가에 따라 가장 효율적입니다 : blog.grandtrunk.net/2004/07/practical-compressor-test
Wim

9

Wim이 지적했듯이 tar 자체는 압축되지 않습니다. tar 압축을 추가하면 (예 : .tar.gz 또는 .tar.bz2 얻기) 전체 tar 파일을 한 번에 압축합니다. 반대로 zip은 각 파일을 개별적으로 압축합니다.

효율성은 작업 부하에 따라 다릅니다. 특히 zip을 사용하면 개별 파일에 직접 액세스 할 수 있습니다. tar를 사용하면 먼저 원하지 않는 (압축 된) 파일을 찾아야합니다. 압축 성능은 압축 대상에 따라 다릅니다. tarwith bzip2는 많은 유사한 파일 (예 : 소스 디렉토리)에 더 좋습니다. zip각 파일의 내용이 매우 다른 경우 더 좋습니다.


4
... 반면에, 목차가 끝에 있기 때문에 내용에 액세스하려면 전체 zip 파일을 가져와야합니다. 대조적으로, 당신은 바이트가 도착하는 한 빨리 tar를 untar 할 수있다.
akira

6

Zip 아카이브는 마지막에 내용의 중앙 디렉토리를 포함합니다 (아직 내부에 무엇이 있는지 모르는 경우 미리 디렉토리를 작성하지 않아도 됨). 이를 통해 전체 아카이브의 압축을 풀지 않고도 단일 파일을 빠르게 추출 할 수 있습니다. 아카이브 디렉토리를 읽고 필요한 것만 추출하면됩니다. 그러나 전체 아카이브에 액세스 할 수 있어야 하며 블록 장치 (플로피 디스크, 하드 드라이브)에서만 사용할 수있는 임의 액세스 가 필요합니다 . 또한 아카이브 디렉토리는 취약합니다. 어떤 이유로 아카이브가 잘 리면 아카이브에서 유용한 항목 을 추출하는 무거운 마법사가 필요합니다 .

Zip 아카이브는 BBS 사용을 위해 만들어졌으며, 수천 개의 단일 파일을 다운로드 할 필요없이 디렉토리의 내용을 하나의 (압축 된) 파일로 묶는 것이 중요했습니다. 같은 이유로 대부분의 웹 사이트가 오늘날에도 다운로드를 번들로 제공하는 것과 유사합니다.

Tar 아카이브는 테이프 드라이브에 번들링 백업을 사용하여 순차적 액세스를 위해 고안되었습니다 . 중앙 디렉토리가 없습니다. 대신, 아카이브에는 일정한 간격으로 헤더 블록이 포함되어 다음 몇 블록에서 어떤 파일이 뒤따를 지 나타냅니다. 타르 아카이브는 한 번에 읽을 수 있습니다. 단일 파일 만 추출해야하는 경우 요청 된 파일을 찾을 때까지 (아마도 끝에있을 수 있음) 처음부터 아카이브를 순차적으로 읽습니다. 그 위에 압축이 적용됩니다. 타르 아카이브에 적용되는 다양한 압축 프로그램 각각 ( compress, gzip,bzip2등)은 스트림 컴프레서이며 어떤 문제에서도 아카이브의 순차적 특성을 변경하지 않습니다. 최악의 경우 추출을 시작할 때까지 약간 더 많은 블록이 필요합니다.

이것은 사소한 차이처럼 들릴 수 있지만 실제로는 철학에서 정반대입니다. zip 아카이브를 사용하면 유용한 모든 작업을 수행하기 위해 항상 전체 파일을 준비해야하지만 tar 아카이브는 파이프 라인으로 스트리밍 할 수 있습니다. 큰 tar 아카이브를 다운로드하고 처음 몇 블록이 들어 오자마자 시작부터 바로 추출을 시작할 수 있습니다 (그리고 내가 찾고있는 파일을 얻는 즉시 다운로드를 중단 할 수 있습니다). Zip 아카이브의 경우 아카이브 디렉토리가 나타날 때까지 기다려야합니다. 이는 아카이브의 맨 끝에옵니다. 그러나 나는 한 번 더 빨리 tar 파일에서있을 것입니다 그것에서 일부 내용을 추출, 손 전체 파일이 있습니다.

두 형식 모두 사용 위치와 방법에 따라 하나의 장점이 있습니다. 파이프 라인 (따라서 한 프로세스에서 다른 프로세스로의 스트리밍 데이터 개념)은 실제로 유닉스 세계에만 존재하기 때문에 다른 시스템에서는 tar 아카이브의 주요 장점이 없어 지므로 Zip 아카이브가 훨씬 인기가 있습니다. 그러나 타르 아카이브는 더 유연하기 때문에 선택을 할 때마다 선호합니다.


5

다른 하나가 이미 말했듯이 tar는 gzip이나 bzip2와 같은 스트림 컴프레서로 압축 할 수있는 모든 파일의 큰 "블록"을 만듭니다.

이것의 단점은 전체 파일을 압축 해제하여 아카이브 내의 하나의 파일에 액세스해야한다는 것입니다.

이것의 장점은 특히 압축 파일이 매우 유사한 경우 압축 비율이 일반적으로 더 높다는 것입니다.

"rar"과 같은 다른 패커는 동일한 효과를 내기 위해 "블록 모드"(또는 유사)를 갖습니다.

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