.tar.xz 파일을 추출하는 방법은 무엇입니까?

.tar.xz 파일을 추출하는 방법은 무엇입니까?

일부 소프트웨어는 새로운 아카이브 형식으로 배포되는 것으로 보입니다.

$ file node-v18.7.0-linux-x64.tar.xz
node-v18.7.0-linux-x64.tar.xz: XZ compressed data

가급적이면 tar(gzip이나 bzip2를 사용할 수 있는 것처럼)를 사용하여 어떻게 압축을 풀 수 있나요?

답변1

여러 tar구현(적어도 GNU tarstarlibarchive bsdtar)에서는 이미 이 압축 형식을 처리하고 있으므로 다음을 수행할 수 있습니다.

  • 형식을 명시적으로 지정하지 말고 tar가 자동으로 압축을 감지하도록 하십시오(gtar², bsdtar 또는 star³ 사용).

    tar -xf node-v18.7.0-linux-x64.tar.xz
    

    또는 진행 상황을 확인하려면 다음을 수행하세요.

    tar -xvf node-v18.7.0-linux-x64.tar.xz
    
  • -J--xzGNU 또는 libarchive와 함께 /를 사용하거나 XZ를 기대하도록 지시하려면 -xzwith를 사용하세요.startar

    tar -xJf node-v18.7.0-linux-x64.tar.xz
    
    gtar -xJf node-v18.7.0-linux-x64.tar.xz
    
    bsdtar -xJf node-v18.7.0-linux-x64.tar.xz
    
    star -x -xz -f node-v18.7.0-linux-x64.tar.xz
    

이러한 특정 구현이 없거나 tar표준 pax명령( tar구현 간 비호환성이 너무 많아 UNIX 표준에서 제거됨)을 사용하는 경우 ⁴를 사용하여 아카이브의 압축을 풀고 xz아카이브를 파이프하십시오.

xz -dc node-v18.7.0-linux-x64.tar.xz | tar -xvf -
xz -dc node-v18.7.0-linux-x64.tar.xz | pax -rv

1 일반적으로 tarGNU 시스템에서 호출되지만 해당 시스템 옆에 설치된 경우 gtar다른 시스템에서 자주 호출됩니다 gnutar.gnu-tar

-² GNU tar의 경우 파일이 stdin에서 파일 이름으로 전달되거나 파일을 검색할 수 없는 경우(이 경우 전달해야 함) 이 옵션은 효과가 없습니다 -J.

³ 별표의 경우 파일을 찾을 수 없으면 아무 효과가 없습니다. 이 경우 실제로 이 -xz옵션을 사용해야 합니다. tar -xf -stdin을 검색할 수 있는 한 여전히 유효합니다.

xz⁴ 이 경우 오류가 항상 감지되지 않을 수도 있다는 점에 유의하세요. 대부분의 Bourne 유사 쉘은 이제 pipefail여기에서 도움이 될 수 있는 ksh93의 옵션을 지원합니다 set -o pipefail.

관련 정보