web-dev-qa-db-ja.com

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

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

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

763
Jorge Castro

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

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

など。tarでCannot execエラーが発生した場合、最初にSudo apt install xz-utilsエラーが発生する可能性があります。

1004
ramslök

試してみる

tar -xJf file.pkg.tar.xz

-Jは、特に.xzファイルを処理するフラグです。

323
jrg

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

unxz < file.tar.xz > file.tar

…これは次と同等です:

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

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

80
Mathias Bynens

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

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

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

tar -xf my_archive.tar

ソース: XZ Utils-Wikipedia

30
Foxx

同じ問題がありました。tar xfコマンドはそれを抽出できませんでした。これを修正するには、xz-utilsパッケージをインストールする必要があります。解決策は次のとおりです。

Sudo apt-get install xz-utils

その後:

tar xf myfile.tar.xz
15
Zsolt Sky
tar -xvf package.tar.xz

-x-ファイルの抽出

-v-処理されたファイルを詳細にリストする

-f-指定されたアーカイブファイルを使用

14
nsane

--xzおよび-Jオプションが使用可能になったバージョン1.22より前の GNU tar の古いバージョンがある場合は、--use-compress-program xzを使用してtar.xzファイルを圧縮または解凍できます。例えば、

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

または

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

Tarが圧縮形式を認識する場合、フラグは必要ありません。

tar xvf *.tar.xz

Tarが古すぎてxzを認識できないなどの理由で入力を手動で解凍する必要がある場合、または特別なパスが必要な場合:

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

パイプは、非圧縮の中間ファイルを作成するよりも高速であり、使用するディスク容量も少なくなります!

4
Orion Lawlor

dtrx が好き

Sudo apt install dtrx
dtrx your-file.tar.xz
4
Boris

うわー、それは本当に良いものです。 Macで7Zipを使用して行われましたか?これを試して:

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

UbuntuにはPython(Python 2.7およびPython 3)が付属しており、アーカイブの抽出に必要なモジュールが含まれています。何らかの理由でtarコマンドが欠落している場合(たとえば、システム管理者がそれを削除し、Sudo privillegeをインストールしていない場合)、以下を使用できます。

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()

.xztar cJf thing.xz /etc/passwdファイルを作成したとします。アーカイブには、etcファイルを含むpasswdディレクトリが含まれます。上記のスクリプトを使用すると、現在の作業ディレクトリにetcディレクトリが作成され、その中にpasswdファイルが作成されます。もちろん、これはextractall()関数内で抽出したいパスを指定することでいつでも拡張できます。

3

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が自動的に作成されます。

0
cat