マニュアルページには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
ファイルを最初にアーカイブしないと、ファイルに直接圧縮を使用できないため、アーカイブされたファイルにのみ-txz
or を使用できるという意味ですか?-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
コマンドは無視されますが(-so
7zにstdoutに書き込むように指示します)、まだ必要です。
パイプを使用するとshからファイルを読み取ることができないため、tarの生成に失敗してもパイプコマンドは失敗しません。 Ksh、bash、およびzshには、コマンドpipefail
全体を失敗させるオプションがあります。
直接電話する方がはるかに簡単ですtar
。ほとんどの最新のtar実装では、gz、bz2、xz圧縮アーカイブを作成できます。
tar -cJf archive.tar.xz dir1 dir2 file1 file2