일반적으로 gzip이나 tar는 "가장 작은 tar.gz"를 만들 수 없습니다. gz 형식으로 압축 할 수있는 많은 압축 유틸리티가 있습니다. 나는 bash는 스크립트 "쓴 gz99 "시도 gzip
, 7z
그리고 advdef
가장 작은 파일을 얻을 수 있습니다. 이것을 사용하여 가능한 가장 작은 파일을 작성하려면 다음을 수행하십시오.
tar c path/to/data | gz99 file.gz
advdef
AdvanceCOMP 의 유틸리티는 일반적으로 가장 작은 파일을 제공하지만 버그도 있습니다 ( gz99
유틸리티는의 출력을 수락하기 전에 파일이 손상되지 않았는지 검사합니다 advdef
). advdef
직접 사용하려면 원하는 느낌으로 file.tar.gz를 만드십시오. 그런 다음 다음을 실행하십시오.
advdef -z -4 file.tar.gz
이것은 gzip과 tar로 읽을 수있는 표준 gz 파일을 생성합니다. 이것은 gz 형식으로 할 수있는 최선의 방법입니다.
tar가 압축 할 수 있다는 사실을 최근에 알게되었고 왜 가장 작은 ".tar.gz"파일을 원하는지 말하지 않았기 때문에 xz와 같은 tar 파일에 더 효율적인 형식을 사용할 수 있다는 것을 알지 못할 수 있습니다. 일반적으로 다른 형식으로 전환하면 gzip 옵션을 사용하는 파일보다 압축 성능이 크게 향상 될 수 있습니다. xz의 가장 큰 단점은 gzip만큼 일반적이지 않으므로 파일을 보내는 사람들이 새 패키지를 설치해야 할 수도 있다는 것입니다. 또한 특히 압축 할 때 약간 느려지는 경향이 있습니다. 이것이 당신에게 중요하지 않고 정말로 작은 tar 파일을 원한다면 다음을 시도하십시오.
tar cv path/to/data | xz -9 > file.tar.xz
Ubuntu 13.10과 같은 최신 버전의 tar는 압축 파일을 자동으로 감지합니다. 따라서 xz 압축을 사용하더라도 평소와 같이 압축을 풀 수 있습니다.
tar xvf file.tar.xz
이러한 압축 유틸리티가 어떻게 비교되는지 빠르게 이해하려면 Linux 커널에서 패치 -3.1.1을 압축하는 효과를 고려하십시오.
utility cpu format size(bytes)
gzip -9 0.02s gz 105,628
advdef -2 0.07s gz 102,619
7z -mx=9 -tgzip 0.42s gz 102,297
advdef -3 0.55s gz 102,290
advdef -4 0.75s gz 101,956
xz -9 0.03s xz 91,064
xz -3e 0.15s xz 90,996
이 간단한 예제에서 우리는 가장 작은 gz를 얻으려면 advdef가 필요하다는 것을 알 수 있습니다 (7z -tgzip은 거의 좋고 버그가 적습니다). 또한 xz로 전환하면 압축 시간이 오래 걸리지 않고 기존 gz 형식을 최대한 활용하려고 시도하는 것보다 훨씬 많은 공간을 확보 할 수 있습니다.