이 질문에는 이미 답변이 있습니다.
tar + gzip의 사용법을 이해하는 방법 tar
은 일반적으로 파일 그룹을 단일 파일로 통합하는 gzip
데 사용되며 해당 파일을 압축하는 데 사용됩니다.
나는 최근에 tar
압축 할 수 있다는 것을 배웠다 .
압축이 핵심에서 작동하는 방식을 완전히 이해하지 못하기 때문에 사전 압축 된 .tar를 gzip으로 전송하면 gzip이 압축되지 않고 잠재적으로 허용되는 것과 그 성질의 것들을 방해 할 수 있다는 우려가 있습니다.
내 질문은 본질적으로 : 절대적으로 가장 작은 tar.gz를 만드는 데 사용해야하는 args / 압축 방법의 조합은 무엇이며 명령 줄 문은 어떻게 생겼습니까?
답변
또는 tar를 다음과 같이 사용자에게 최대 압축으로 지정할 수 있습니다.
export GZIP=-9
tar cvzf file.tar.gz /path/to/directory
또한 envvar를 깔끔하게 유지하려면 다음을 수행하십시오.
env GZIP=-9 tar cvzf file.tar.gz /path/to/directory
답변
당신 stated- “으로 할 수 타르 또한 압축 -“을 의미 tar
하지 않습니다 항상 그 자체로 데이터를 압축.
z
옵션 과 함께 사용하는 경우에만 그렇게합니다 . 그 자체로도 아니라 tard 데이터를 gzip을 통해 전달합니다.
그러나, 대신에 명시된 바와 같이 ,이 대답하면 파이프 수있는 두 개의 명령 : tar
및 gzip
명시 적 대한 압축 레벨을 지정할 수 있도록 gzip
작은 크기의 출력을 달성하는 명령.
tar cvf-/ path / to / directory | gzip -9-> 파일 .tar.gz
다음은 9
최대 가능 압축률을 지정한다.
답변
일반적으로 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 형식을 최대한 활용하려고 시도하는 것보다 훨씬 많은 공간을 확보 할 수 있습니다.
답변
tar c /path/to/data | gzip --best > file.tar.gz
gzip
옵션 --best
(과 동일 -9
)은 가장 높은 압축 수준을 요청합니다.