TAR을 사용하여 최대 압축을 사용하여 디렉토리를 XZ하는 방법은 무엇입니까?

TAR을 사용하여 최대 압축을 사용하여 디렉토리를 XZ하는 방법은 무엇입니까?

그래서 최대 압축을 사용하여 디렉터리를 압축해야 합니다.

어떻게 해야 합니까 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지정할 수 있습니다 (예 : . xztar

이것은 지금이다최고.

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

관련 정보