답변:
타르
지퍼
zip이 파일을 개별적으로 압축한다는 사실은 압축 비율에 영향을 미치며, 특히 많은 작은 유사한 파일에 영향을 미칩니다.
(적어도 10 년 전에는 정확히 맞았습니다.)
Tar은 Zip보다 훨씬 더 많은 메타 데이터를 유지합니다. 비교를 참조하십시오 (약간 구식 임).
(클릭하면 확대)
Tar은 테스트의 65 %를 통과하며 Zip은 17 % 만 통과합니다. BSD 라이센스로 github에서 테스트 스위트를 사용할 수 있도록 Mac이 있다면 직접 시도해 볼 수 있습니다. 리눅스의 경우 메타 데이터가 있는지 확실하지 않으므로 이러한 테스트와 관련이 없을 수 있습니다.
효율성은 다양한 방식으로 측정 할 수 있습니다.
"결과 아카이브를 조작하는 도구는 얼마나 일반적입니까?"와 같은 다른 질문도 있습니다.
예를 들어 bzip2
보다 작은 파일을 gzip
만들지 만 시간이 훨씬 오래 걸릴 수 있습니다. 또한 내 경험에 따르면 gzip
유닉스 계열 시스템에서는 보편적이지만 bzip2
여전히 일반적이지 않습니다 (매우 일반적이며 쉽게 얻을 수는 있지만).
Wim이 지적했듯이 tar 자체는 압축되지 않습니다. tar 압축을 추가하면 (예 : .tar.gz 또는 .tar.bz2 얻기) 전체 tar 파일을 한 번에 압축합니다. 반대로 zip은 각 파일을 개별적으로 압축합니다.
효율성은 작업 부하에 따라 다릅니다. 특히 zip을 사용하면 개별 파일에 직접 액세스 할 수 있습니다. tar를 사용하면 먼저 원하지 않는 (압축 된) 파일을 찾아야합니다. 압축 성능은 압축 대상에 따라 다릅니다. tar
with bzip2
는 많은 유사한 파일 (예 : 소스 디렉토리)에 더 좋습니다. zip
각 파일의 내용이 매우 다른 경우 더 좋습니다.
Zip 아카이브는 마지막에 내용의 중앙 디렉토리를 포함합니다 (아직 내부에 무엇이 있는지 모르는 경우 미리 디렉토리를 작성하지 않아도 됨). 이를 통해 전체 아카이브의 압축을 풀지 않고도 단일 파일을 빠르게 추출 할 수 있습니다. 아카이브 디렉토리를 읽고 필요한 것만 추출하면됩니다. 그러나 전체 아카이브에 액세스 할 수 있어야 하며 블록 장치 (플로피 디스크, 하드 드라이브)에서만 사용할 수있는 임의 액세스 가 필요합니다 . 또한 아카이브 디렉토리는 취약합니다. 어떤 이유로 아카이브가 잘 리면 아카이브에서 유용한 항목 을 추출하는 무거운 마법사가 필요합니다 .
Zip 아카이브는 BBS 사용을 위해 만들어졌으며, 수천 개의 단일 파일을 다운로드 할 필요없이 디렉토리의 내용을 하나의 (압축 된) 파일로 묶는 것이 중요했습니다. 같은 이유로 대부분의 웹 사이트가 오늘날에도 다운로드를 번들로 제공하는 것과 유사합니다.
Tar 아카이브는 테이프 드라이브에 번들링 백업을 사용하여 순차적 액세스를 위해 고안되었습니다 . 중앙 디렉토리가 없습니다. 대신, 아카이브에는 일정한 간격으로 헤더 블록이 포함되어 다음 몇 블록에서 어떤 파일이 뒤따를 지 나타냅니다. 타르 아카이브는 한 번에 읽을 수 있습니다. 단일 파일 만 추출해야하는 경우 요청 된 파일을 찾을 때까지 (아마도 끝에있을 수 있음) 처음부터 아카이브를 순차적으로 읽습니다. 그 위에 압축이 적용됩니다. 타르 아카이브에 적용되는 다양한 압축 프로그램 각각 ( compress
, gzip
,bzip2
등)은 스트림 컴프레서이며 어떤 문제에서도 아카이브의 순차적 특성을 변경하지 않습니다. 최악의 경우 추출을 시작할 때까지 약간 더 많은 블록이 필요합니다.
이것은 사소한 차이처럼 들릴 수 있지만 실제로는 철학에서 정반대입니다. zip 아카이브를 사용하면 유용한 모든 작업을 수행하기 위해 항상 전체 파일을 준비해야하지만 tar 아카이브는 파이프 라인으로 스트리밍 할 수 있습니다. 큰 tar 아카이브를 다운로드하고 처음 몇 블록이 들어 오자마자 시작부터 바로 추출을 시작할 수 있습니다 (그리고 내가 찾고있는 파일을 얻는 즉시 다운로드를 중단 할 수 있습니다). Zip 아카이브의 경우 아카이브 디렉토리가 나타날 때까지 기다려야합니다. 이는 아카이브의 맨 끝에옵니다. 그러나 나는 한 번 할 더 빨리 tar 파일에서있을 것입니다 그것에서 일부 내용을 추출, 손 전체 파일이 있습니다.
두 형식 모두 사용 위치와 방법에 따라 하나의 장점이 있습니다. 파이프 라인 (따라서 한 프로세스에서 다른 프로세스로의 스트리밍 데이터 개념)은 실제로 유닉스 세계에만 존재하기 때문에 다른 시스템에서는 tar 아카이브의 주요 장점이 없어 지므로 Zip 아카이브가 훨씬 인기가 있습니다. 그러나 타르 아카이브는 더 유연하기 때문에 선택을 할 때마다 선호합니다.