.xz를 사용하는 tarball의 압축을 해제하려면 어떻게합니까?


776

-xfzgzip 및 bzip2 아카이브를 처리 하는 플래그로 tarball을 추출하는 데 익숙합니다 .

최근에 .tar.xz파일을 봤는데를 사용하여 한 단계로 압축을 풀고 싶습니다 tar. 어떻게 할 수 있습니까?


10
xz-utils아직 설치 되어 있지 않은 경우 설치해야 할 수도 있습니다
Tobias Kienzler

여기 당신을 위해 타르 플래그를 추측 내 작은 스크립트는 다음과 같습니다 gist.github.com/shime/5908634
shime은

2
tar --helptar플래그를 나열 합니다. -xzf에 적용됩니다 gzip. -xjfbz2. -xJfxz.
noobninja

답변:


1017

우분투에는 형식을 자체적으로 인식하는 GNU tar가 포함되어 있습니다! 하나의 명령은 manual에 따라 지원되는 압축 방법으로 작동합니다 .

tar xf archive.tar.xz
tar xf archive.tar.gz
tar xf archive.tar

tar. Cannot exec오류가 발생하면 sudo apt install xz-utils먼저 해야 할 수도 있습니다 .


41
GNU tar의 기능입니다. 경쟁 구현에 대해서는 모르겠지만 GNU tar는 우분투와 가장 관련이 있어야합니다. gnu.org/software/tar/manual/tar.html#SEC131
ramslök

42
에 접속하면 다음을 tar: xz: Cannot exec: No such file or directory설치하십시오 xz-utils:sudo apt-get install xz-utils
Collin Anderson

10
이것은 답변이 아니라 '요청한 경우에도 답변에 신경 쓰지 않습니다'라는 답변입니다. '최신'이 아닌 사람들을위한 생각을 예비하십시오
Sean Houlihane

6
tar더 이상 특정 플래그가 필요하지 않은 버전은 무엇입니까 ?
Mark Tomlin

8
@SeanHoulihane, OP가 사소한 XY 문제를 요구했기 때문에 대답이 아닙니다 . ramslök은 요청한 것보다 OP를 더 잘 전달했으며, "당신은 요청한 경우에도 대답에 신경 쓰지 않습니다"라는 효과적인 OP를 포함 시켰습니다.
Christos Hayward

331

시험

tar -xJf file.pkg.tar.xz

-J특히 .xz 파일을 처리하는 플래그입니다.


59
2020 년에 얼마나 많은 플래그를 가질 수 있을지 궁금합니다. tar 스위치를 아는 것은 Linux-fu에서 이미 블랙 벨트입니다. : /
Shiki

22
@ Shiki : 압축 형식 플래그를 더 이상 지정하지 않는 이유 일 것입니다. (ramslök의 답변 참조)
네이트 CK


6
이것은 tar를 지원하는 모든 버전의 질문에 대한 답변이므로 완전히 허용되는 답변이어야합니다..xz
pospi

8
년에서 2030 플래그은 지각 될 완전한 튜링 ... 2,040 될
user1359

80

어떤 이유로 든 tar솔루션이 작동하지 않으면 (아마도 OS X 내장을 사용하고 있기 때문에) 다음을 시도하십시오.

unxz < file.tar.xz > file.tar

… 다음과 같습니다.

xz -dc < file.tar.xz > file.tar

그런 다음 tar파일을 untar하는 데 사용하십시오.


2
파이프로 구성 할 수 있어야합니다.
gerrit

6
난 그냥 당신이 할 수있는 것 같은 느낌 unxz < file.tar.xz | tar x.
thirtythreeforty

7
이것은 나를 위해 일 tar xf하지 않았다. 우분투 12.04
철학자

내 우분투 시스템에 적어도 unxz일치하지 않는 xz -dc,하지만에 xz -d. 에 추출 file.tar.xz하려면 file.tar간단히 씁니다 unxz file.tar.xz. 당신이 동등한를 원하는 경우 xz -dc, 사용을 stdout에 압축 해제 xzcat. 예를 들면 xzcat file.tar.xz | tar x.
nwellnhof

30

xz는 무손실 데이터 압축기입니다. xz에서 tar ball을 추출한 다음 tar를 추출해야합니다.

unxz my_archive.tar.xz      # results in my_archive.tar

그런 다음 타르를 추출하는 것을 알고 있습니다.

tar -xf my_archive.tar

출처 : XZ의 Utils - 위키 백과 .


1
가장 좋은 답변입니다. xzstdout 리디렉션이 필요하지 않습니다. 더 나은 :unxz -k
마크 Jeronimus

@ MarkJeronimus 중간 파일을 생성하기 때문에 이것이 좋지 않습니다. GNU tar 또는 파이프를 사용하면 적은 리소스가 필요합니다.
Melebius

15

나는 같은 문제가 있었는데 tar xf명령이 그것을 추출 할 수 없었습니다. 이 문제를 해결하려면 xz-utils패키지 를 설치해야 합니다. 해결책은 다음과 같습니다.

sudo apt-get install xz-utils

그때:

tar xf myfile.tar.xz

14
tar -xvf package.tar.xz

-x - 파일의 압축을 풉니 다

-v -처리 된 파일을 자세하게 나열

-f -지정된 보관 파일 사용


5

--xz 및 -J 옵션을 사용할 수있는 버전 1.22 이전 의 이전 버전의 GNU tar 가있는 경우을 사용하여 tar.xz 파일을 압축하거나 압축 해제 할 수 있다는 점을 추가하고 싶습니다 --use-compress-program xz. 예를 들어

tar --use-compress-program xz -cf example.tar.xz file1 file2 file3

또는

tar --use-compress-program xz -xf example.tar.xz

4

tar가 압축 형식을 인식하면 플래그가 필요하지 않습니다.

tar xvf *.tar.xz

예를 들어 tar가 너무 오래되어 xz를 인식하지 못하거나 특수한 경로가 필요하기 때문에 입력을 수동으로 압축 해제해야하는 경우 :

xz -cd *.tar.xz | tar xvf -

파이프는 압축되지 않은 중간 파일을 만드는 것보다 빠르며 디스크 공간도 적게 사용합니다!



3

와우, 그것은 정말 좋은 것입니다. Mac에서 7zip으로 완료 되었습니까? 이 시도:

7z x -so file.tar.xz | tar xf -

그가 원하는 것이 아닌 7z가 필요합니다-그는 tar로 완전히하고 싶습니다.
jrg

네, 고마워요- "xz"는 저를 얻었습니다! 어쨌든, 그것은 한 걸음입니다 :) And tar J= tar xz, 그래서 우리는 tar xzf file.tar.xz"normal"처럼 쓸 수도 있습니다 tar xvfz file.tar.gz. 기본적으로 아무런 차이가 없습니다. 스위치를 사용하기 전에 대시가 필요하지 않습니다.

질문에 대한 답변과 거의 같습니다. :)

tar zxf가 .xz 파일에서 오류를 일으켰 기 때문에 나는 버려졌습니다 .J를 항상 사용하는 것이 길이라고 생각합니다.
Jorge Castro

2
예! 매뉴얼 페이지가 소스와 동기화되지 않았습니다. buffer.c는 lzma에 -J를 사용합니다.

3

Ubuntu에는 Python (Python 2.7 및 Python 3)이 포함되어 있으며, 여기에는 아카이브 추출에 필요한 모듈이 포함되어 있습니다. 따라서 어떤 이유로 든 tar명령이 누락 된 경우 (sysadmin이 명령을 제거했으며 sudo설치할 권한 이없는 경우) 다음을 사용할 수 있습니다.

python3 -c 'import tarfile,sys; b = tarfile.open(sys.argv[1]);print(b.extractall())' ./archive.xz 

짧은 스크립트로서 다음과 같이 더 읽기 쉽습니다.

#!/usr/bin/env python3
import tarfile,sys

with tarfile.open( sys.argv[1] ) as fd:
    fd.extractall()

.xz파일을 생성했다고 가정 해 봅시다 tar cJf thing.xz /etc/passwd. 아카이브는 파일이 들어있는 etc디렉토리를 포함합니다 passwd. 위의 스크립트를 사용하면 etc현재 작업 디렉토리 에 디렉토리가 작성되고 그 안에 passwd파일 이 있습니다 . 물론 extractall()함수 내에서 추출하려는 경로를 지정하여 항상 확장 할 수 있습니다 .


0

unar 7z 및 RAR을 포함한 거의 모든 형식을 보관 취소하기 위해 아주 간단한 간단한 프로그램이며 입력하기 쉽습니다.

(GNU) Objective-C로 작성되었으므로 gnustep(GNU의 Objective-C 구현) 라이브러리를 설치해야합니다 ( gnustep-base-runtimelibgnustep-base1.25)

--install-suggests를 사용하거나 apt제안 된 패키지를 설치 하도록 구성한 경우 unar원하지 않는 많은 GUI GNUStep 프로그램을 제안하고 설치합니다.

sudo apt install --no-install-suggests unar 
unar linux-source.tar.xz

출력 디렉토리가 linux-source자동으로 생성 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.