멀티스레딩을 사용하여 tar.xz를 생성하고 추출하는 방법

멀티스레딩을 사용하여 tar.xz를 생성하고 추출하는 방법

나는 사용한다

tar-cJvf결과 파일.tar.xz 압축할 파일

생성 tar.xz하고

tar-xzvf결과 파일.tar.xz

아카이브를 현재 디렉터리에 추출합니다. 두 경우 모두 멀티스레딩을 사용하는 방법은 무엇입니까? 유틸리티를 설치하고 싶지 않습니다.

답변1

tar -c -I 'xz -9 -T0' -f archive.tar.xz [list of files and folders]

이는 파일 및 디렉토리 목록을 .tar.xz아카이브로 압축합니다. xz하위 프로세스에 전달될 매개변수를 지정하여 tar 아카이브를 압축합니다 .

이는 tar 아카이브를 압축하는 데 사용할 프로그램과 여기에 전달할 인수를 -I알려주는 tar에 대한 인수를 사용하여 수행됩니다 . tar최대 압축을 사용함을 나타냅니다 -9. xzCPU만큼 스레드를 사용함을 나타냅니다 -T0.xz


2024년 1월 업데이트:

멀티 스레드 옵션을 사용하더라도 xz스레드 2개 이상으로 확장이 거의 불가능하고 압축/압축 해제 성능이 상대적으로 낮습니다.

나는 그것을 사용하는 것이 좋습니다 ZSTD. 명령은 다음과 같습니다:

tar -c -I 'zstd -22 --ultra --long -T0' -f archive.tar.xz [list of files and folders]

지침:

  • 이 명령에는 최소 5GB의 많은 RAM이 필요합니다. 압축 수준을 낮추거나 ultra/long옵션을 제거하여 RAM 소비를 줄일 수 있습니다.
  • 소스 데이터가 충분하지 않은 경우(1GB 미만) 스레딩을 사용하지 못할 수 있습니다. 여전히 소량의 데이터에 스레드를 사용하려면 압축 수준을 22에서 20으로 낮추세요.

답변2

XZ_DEFAULTS또는 XZ_OPT환경 변수를 사용할 수 있습니다 .

XZ_기본값일반적으로 쉘 초기화 스크립트에 설정되는 시스템 전체 구성으로 사용하는 것이 좋습니다.

XZ_OPTxz스크립트나 도구(예: GNU)가 실행될 때 옵션을 전달하는 데 사용됩니다 tar. 바라보다 man xz.

예: 멀티스레딩( -T0) 및 최대 압축 수준( -9) 사용:

XZ_OPT='-T0 -9' tar -cJf resultfile.tar.xz files_to_compress

인용하다Bash 또는 파생 쉘에서 최신 GNU tar를 사용하십시오., 또한보십시오xz 매뉴얼 페이지

답변3

이전 tar의 경우 다음과 같이 작동합니다.

tar-cf-  파일 및 폴더 목록| xz -9 -T0 >|archive.tar.T.xz

관련 정보