일부 소프트웨어는 새로운 아카이브 형식으로 배포되는 것으로 보입니다.
$ 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 tar
및 star
libarchive 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
--xz
GNU 또는 libarchive와 함께 /를 사용하거나 XZ를 기대하도록 지시하려면-xz
with를 사용하세요.star
tar
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 일반적으로 tar
GNU 시스템에서 호출되지만 해당 시스템 옆에 설치된 경우 gtar
다른 시스템에서 자주 호출됩니다 gnutar
.gnu-tar
-
² GNU tar의 경우 파일이 stdin에서 파일 이름으로 전달되거나 파일을 검색할 수 없는 경우(이 경우 전달해야 함) 이 옵션은 효과가 없습니다 -J
.
³ 별표의 경우 파일을 찾을 수 없으면 아무 효과가 없습니다. 이 경우 실제로 이 -xz
옵션을 사용해야 합니다. tar -xf -
stdin을 검색할 수 있는 한 여전히 유효합니다.
xz
⁴ 이 경우 오류가 항상 감지되지 않을 수도 있다는 점에 유의하세요. 대부분의 Bourne 유사 쉘은 이제 pipefail
여기에서 도움이 될 수 있는 ksh93의 옵션을 지원합니다 set -o pipefail
.