.xzを使用するtarballを圧縮解除するにはどうすればよいですか?


776

私は-xfz、gzipおよびbzip2アーカイブを処理するフラグを使用してtarballを抽出することに慣れています。

最近、.tar.xzファイルに遭遇しましたが、を使用して1ステップで解凍したいのtarですが、どうすればよいですか?


10
xz-utilsまだ存在しない場合はインストールする必要があることに注意してください
トビアスキンツラー

ここにあなたのためのタールフラグを推測私の小さなスクリプトは次のとおりです。gist.github.com/shime/5908634
SHIMEは

2
tar --helptarフラグをリストします。 -xzfに適用されgzipます。 -xjfbz2-xJfxz
noobninja

回答:


1017

Ubuntuには、GNU tarが含まれています。GNUtarは、フォーマットを単独で認識します。1つのコマンドは、マニュアルごとにサポートされている圧縮方法で機能します

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はUbuntuに最も関連するはずです。 gnu.org/software/tar/manual/tar.html#SEC131
ramslök

42
あなたがに実行する場合tar: xz: Cannot exec: No such file or directory、インストールxz-utilssudo apt-get install xz-utils
コリン・アンダーソン

10
これは答えではなく、「あなたが尋ねたとしても、あなたは答えを気にしない」という応答です。「最新」ではない人のための予備の考え
ショーン・フーリハネ

6
どのバージョンのtar特定のフラグは不要になりましたか?
マークトムリン

8
@ SeanHoulihane、OPはマイナーなXY問題を尋ねたので、それは答えではありません。ramslökは、OPが要求されたよりも優れており、それは効果的である「あなたが尋ねたとしても答えを気にしない」を含みました。
クリストスヘイワード

331

試してみる

tar -xJf file.pkg.tar.xz

-J特に.xzファイルを扱うフラグです。


59
2020年にはいくつのフラグが設定されるのだろうか。たとえば... 45種類の圧縮?tar-switchを知ることは、Linux-fuですでに黒帯です。:/
シキ

22
@Shiki:それがおそらく圧縮形式フラグをもう指定しない理由です。(ramslökの答えを参照してください。)
ネイトCK


6
これは、tarサポートのすべてのバージョンの質問に答えているため、完全に受け入れられた答えであるはずです.xz
-pospi

8
2030のフラグがチューリング完全になる年に... 2040年、彼らは衆生になる
user1359

80

何らかの理由でtarソリューションが機能しない場合(おそらくOS Xビルトインを使用しているため)、これを試してください:

unxz < file.tar.xz > file.tar

…これは以下と同等です:

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

次に、を使用tarしてファイルを展開します。


2
それはパイプで構築できるはずです。
ゲリット14年

6
私はあなたができることunxz < file.tar.xz | tar xや似ていると感じています。
十三三十四

7
これは私のために働いたが、そうでtar xfはなかった。ubuntu 12.04
philshem

少なくとも私のUbuntuマシンで、unxzと等価ではないxz -dcが、それにxz -d。だから抽出file.tar.xzするためにfile.tar、あなたは単に書くだろうunxz file.tar.xz。に相当するものが必要な場合はxz -dc、標準出力に解凍して、を使用しますxzcat。たとえばxzcat file.tar.xz | tar x
nwellnhof

30

xzはロスレスデータコンプレッサーです。xzからtarボールを抽出してから、tarを抽出する必要があります。

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

次に、タールを抽出することを知っています

tar -xf my_archive.tar

出典:XZ Utilsの-ウィキペディア


1
ベストアンサー。xzstdoutリダイレクトは必要ありません。さらに良い:unxz -k
マークジェロニムス

@MarkJeronimus中間ファイルを作成するので、これはあまり良くありません。GNU tarまたはパイプを使用すると、必要なリソースが少なくなります。
メレビウス

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」が私を手に入れました!とにかく、それはとにかく一歩です:)そしてtar J=なのでtar xztar xzf file.tar.xz"normal"のように書くことさえできtar xvfz file.tar.gzます。基本的に違いはありません。スイッチを使用する前にダッシュは必要ありません。

それはほとんど答えが質問で与えられたようです。:)

tar zxfが.xzファイルでエラーになったため、私も投げ捨てられました。常にJを使用するだけでよいと思います。
ホルヘカストロ

2
うん!マニュアルページはソースと同期していません。buffer.cはlzmaに-Jを使用します。

3

UbuntuにはPython(Python 2.7およびPython 3)が付属しており、アーカイブの抽出に必要なモジュールが含まれています。したがって、何らかの理由でtarコマンドが欠落している場合(たとえば、システム管理者がコマンドを削除し、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。アーカイブにはetcpasswdファイルが含まれるディレクトリが含まれます。上記のスクリプトを使用するetcと、現在の作業ディレクトリにディレクトリが作成され、その中にpasswdファイルが作成されます。もちろん、これはextractall()関数内で抽出したいパスを指定することでいつでも拡張できます。


0

unar 7zやRARを含むほとんどすべてのフォーマットを展開するための、とても素敵なシンプルなプログラムで入力しやすい

(GNU)Objective-Cで記述されているようで、いくつかのgnustep(GNUのObjective-C実装)ライブラリのインストールが必要です(gnustep-base-runtimeおよび libgnustep-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.