7zコマンドはXZファイルを生成します

7zコマンドはXZファイルを生成します

マニュアルページには7zツールのサポートが記載されています。7z、LZMA2、XZ、ZIP、Zip64、CAB、RAR、ARJ、GZIP、BZIP2、TAR、CPIO、RPM、ISO、ほとんどのファイルシステムイメージとDEB滞在。

-t{Type}次のコマンドが成功すると、型を渡すことができることがわかります。

7z a -tzip archive.zip dir1 dir2 file1 file2

.xzただし、次のコマンドを使用してファイルをアーカイブすることはできません。

7z a -txz archive.zip dir1 dir2 file1 file2
$ 7z a -txz archive.xz dir1 dir2 file1 file2

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (806E9),ASM,AES-NI)

Scanning the drive:
2 folders, 7 files, 196192711 bytes (188 MiB)

Creating archive: archive.xz

Items to compress: 9



System ERROR:
E_INVALIDARG

私がここで何か間違っているのでしょうか?.xzコマンドを使用してファイルを作成するには7z

編集する: 次のコマンドが成功します。

7z a -txz archive archive.tar

ファイルを最初にアーカイブしないと、ファイルに直接圧縮を使用できないため、アーカイブされたファイルにのみ-txzor を使用できるという意味ですか?-tbzip2

ベストアンサー1

gzip( .gz) と bzip2( .bz2) と似ていますが、zip と rar とは異なり、xz はアーカイブ形式ではなく圧縮形式です。ファイルを圧縮できます。

7z a -txz foo.xz foo

これはと同じですxz foo

通常、圧縮アーカイブを作成するには、tarアーカイブを作成して圧縮します。 7zを使用して圧縮アーカイブを作成できますが、私が知っている限り、1つのステップにすることはできません。まずtarを作成してから圧縮する必要があります。 (7zは圧縮アーカイブから直接読み取る方法を知っています。)パイプラインでこれを行うことができます。

set -o pipefail
7z a -ttar -so archive.tar.xz dir1 dir2 file1 file2 | 7z a -txz -si archive.tar.xz

私が知る限り、左のarchive.tar.xzコマンドは無視されますが(-so7zにstdoutに書き込むように指示します)、まだ必要です。

パイプを使用するとshからファイルを読み取ることができないため、tarの生成に失敗してもパイプコマンドは失敗しません。 Ksh、bash、およびzshには、コマンドpipefail全体を失敗させるオプションがあります。

直接電話する方がはるかに簡単ですtar。ほとんどの最新のtar実装では、gz、bz2、xz圧縮アーカイブを作成できます。

tar -cJf archive.tar.xz dir1 dir2 file1 file2

おすすめ記事