私は、gzipとbzip2アーカイブを処理する-xfz
フラグを使用してtarballを抽出することに慣れています。
最近.tar.xz
ファイルに遭遇したので、tar
を使用して1ステップで解凍したいのですが、どうすればよいですか?
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
エラーが発生する可能性があります。
試してみる
tar -xJf file.pkg.tar.xz
-J
は、特に.xzファイルを処理するフラグです。
何らかの理由でtar
ソリューションが機能しない場合(おそらくOS Xビルトインを使用しているため)、これを試してください:
unxz < file.tar.xz > file.tar
…これは次と同等です:
xz -dc < file.tar.xz > file.tar
次に、tar
を使用してファイルを展開します。
xzはロスレスデータコンプレッサーです。 xzからtarボールを抽出してから、tarを抽出する必要があります。
unxz my_archive.tar.xz # results in my_archive.tar
次に、タールを抽出することを知っています
tar -xf my_archive.tar
ソース: XZ Utils-Wikipedia 。
同じ問題がありました。tar xf
コマンドはそれを抽出できませんでした。これを修正するには、xz-utils
パッケージをインストールする必要があります。解決策は次のとおりです。
Sudo apt-get install xz-utils
その後:
tar xf myfile.tar.xz
tar -xvf package.tar.xz
-x
-ファイルの抽出
-v
-処理されたファイルを詳細にリストする
-f
-指定されたアーカイブファイルを使用
--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
Tarが圧縮形式を認識する場合、フラグは必要ありません。
tar xvf *.tar.xz
Tarが古すぎてxzを認識できないなどの理由で入力を手動で解凍する必要がある場合、または特別なパスが必要な場合:
xz -cd *.tar.xz | tar xvf -
パイプは、非圧縮の中間ファイルを作成するよりも高速であり、使用するディスク容量も少なくなります!
dtrx が好き
Sudo apt install dtrx
dtrx your-file.tar.xz
うわー、それは本当に良いものです。 Macで7Zipを使用して行われましたか?これを試して:
7z x -so file.tar.xz | tar xf -
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()
.xz
でtar cJf thing.xz /etc/passwd
ファイルを作成したとします。アーカイブには、etc
ファイルを含むpasswd
ディレクトリが含まれます。上記のスクリプトを使用すると、現在の作業ディレクトリにetc
ディレクトリが作成され、その中にpasswd
ファイルが作成されます。もちろん、これはextractall()
関数内で抽出したいパスを指定することでいつでも拡張できます。
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
が自動的に作成されます。