그래서 최대 압축을 사용하여 디렉터리를 압축해야 합니다.
어떻게 해야 합니까 xz
? tar
그냥 사용할 수 없기 때문에 그것도 필요하다는 뜻입니다 xz
. 예를 들어 생성할 수 있는 oneliner가 있습니까 foo.tar.xz
?
답변1
tar
파생 셸에서 최신 bash 또는 GNU를 사용하세요.
XZ_OPT=-9 tar cJf tarfile.tar.xz directory
tar의 소문자 j 스위치는 bzip을 사용하고 대문자 J 스위치는 xz를 사용합니다.
환경 변수를 사용하면 호출 애플리케이션에서 설정할 수 없는 설정을 XZ_OPT
지정할 수 있습니다 (예 : . xz
tar
이것은 지금이다최고.
man xz
설정할 수 있는 다른 옵션 보기 ( -e
/--extreme
가능한특정 데이터 세트에 대해 추가적인 압축 이점을 제공합니다.
XZ_OPT=-e9 tar cJf tarfile.tar.xz directory
답변2
xz
압축 수준 플래그를 포함하여 표준 명령줄 플래그 세트를 따른다고 가정하면 다음을 시도해 볼 수 있습니다.
tar -cf - foo/ | xz -9 -c - > foo.tar.xz
답변3
XZ_OPT=-9e tar cJf tarfile.tar.xz directory
그보다 더 나은
XZ_OPT=-9 tar cJf tarfile.tar.xz directory
옵션 -e, "--extreme 압축 사전 설정 수정(-0 ... -9)"은 압축기 또는 압축 해제기의 메모리 사용량을 늘리지 않고 더 나은 압축 비율을 얻으려면(예외: 압축 메모리 사용량이 증가할 수 있음) 사전 설정 -0을 사용합니다. .. -2) 조금 증가합니다. 단점은 압축 시간이 극적으로 증가한다는 것입니다(쉽게 두 배가 됨).
답변4
tar --help
: -I, --use-compress-program=PROG
tar -I 'xz -9' -cvf foo.tar.xz foo/
tar -I 'gzip -9' -cvf foo.tar.gz foo/
압축을 위해 외부 압축기를 사용할 수도 있습니다.
tar -I 'lz4 -9' -cvf foo.tar.lz4 foo/
tar -I 'zstd -19' -cvf foo.tar.zst foo/
외부 압축기 압축 해제:
tar -I lz4 -xvf foo.tar.lz4
tar -I zstd -xvf foo.tar.zst
보관된 외부 압축기 목록:
tar -I lz4 -tvf foo.tar.lz4
tar -I zstd -tvf foo.tar.zst