답변:
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
bash를 사용한다고 가정합니다. 일반적으로 GZIP 환경 변수를 "-9"로 설정하고 tar를 정상적으로 실행하십시오.
또한 최고의 압축을 원한다면 gzip을 사용하지 마십시오. lzma 또는 7z를 사용하십시오.
그리고 gzip을 사용할 때 (여러 가지 이유로 좋은 아이디어입니다)는 pigz
아닌 프로그램 사용을 고려 하십시오 gzip
.
GZIP_OPT
사용법은 동일해야합니다.
tar에 gzip 플래그를 사용하는 대신 tar 프로세스 후에 파일을 수동으로 gzip으로 압축 한 다음 gzip 프로그램의 압축 레벨을 지정할 수 있습니다.
tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar
또는 다음을 사용할 수 있습니다.
tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz
gzip 명령 줄의 -9는 gzip에게 가능한 최대 압축 수준을 사용하도록 지시합니다 (기본값은 -6).
편집 : @depesz 주석을 기반으로 고정 파이프 명령 줄.
file.tar
하므로로 끝나야 gzip
합니다.
f -
않습니까? 어떤 파일이없는 경우, 다음은 표준 입력 / 출력입니다
최신 버전의 tar는 xz 아카이브 형식 ( 2009 년 1.22 이후 GNU tar, 2010 년 1.17.0 이후 Busybox )을 지원합니다.
lzma2 기반으로 gz 의 7-Zip 버전 과 비슷합니다 . xz 지원이 필요한 경우 압축 성능이 향상됩니다.
tar -Jcvf file.tar.xz /path/to/directory
방금 여기 (기본적 으로이 질문의 속임수이지만 Unix stackexchange에서) 다른 게시물의 GZIP와 유사한 XZ 압축 수준을 제어하는 XZ_OPT = -9 환경 변수도 있음을 알았습니다.
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
tar cv /path/to/directory | gzip --best > file.tar.gz
이것이 Matrix Mole의 두 번째 솔루션이지만 약간 단축되었습니다.
tar를 호출 할 때 옵션 f
은 출력이 파일임을 나타냅니다. 그것을 -
(stdout)으로 설정 하면 tar는 출력을 stdout에 쓰게되는데 이것은 f
and와 둘 다없는 기본 동작 -
입니다.
gzip
매뉴얼 페이지에 명시된 바와 같이 파일이 지정되어 있지 않으면 gzip은 표준 입력에서 압축됩니다. 필요가 없습니다 -
의 gzip
호출.
옵션 --best
(과 동일 -9
)은 최고 압축 수준을 설정합니다.
xz
및 pixz
도. 중간 .tar 파일을 만들지 않고도 병렬 압축에 사용되는 스레드 수를 제어하는 좋은 방법입니다. 그렇게tar -cv /path/to/dir | pixz -p4 > output.tpxz
top
200 % -400 $ CPU 사이의 어느 곳에서나 보고 볼 수 있습니다 .