TARを使用して最大圧縮を使用してディレクトリをXZする方法は?

TARを使用して最大圧縮を使用してディレクトリをXZする方法は?

したがって、最大圧縮を使用してディレクトリを圧縮する必要があります。

どうすればいいですかxztarただ使えないのでそれも必要だという意味ですxz。たとえば、作成できるオネライナーはありますかfoo.tar.xz

答え1

tar派生シェルで最新のbashまたはGNUを使用してください。

XZ_OPT=-9 tar cJf tarfile.tar.xz directory

tarの小文字のjスイッチはbzipを使用し、大文字のJスイッチはxzを使用します。

環境変数を使用すると、呼び出し元アプリケーションで設定できない設定をXZ_OPT指定できます。 xztar

これは今です最高

man xz設定できる他のオプションを見る(-e/--extreme 可能特定のデータセットに対して追加の圧縮利点を提供します。

XZ_OPT=-e9 tar cJf tarfile.tar.xz directory

答え2

xz圧縮レベルフラグを含む標準のコマンドラインフラグセットに従うと仮定すると、次のことを試すことができます。

tar -cf - foo/ | xz -9 -c - > foo.tar.xz 

答え3

XZ_OPT=-9e tar cJf tarfile.tar.xz directory

それより良い

XZ_OPT=-9 tar cJf tarfile.tar.xz directory

オプション-e、「--extreme圧縮プリセットの変更(-0 ... -9)」は、圧縮機または圧縮解除器のメモリ使用量を増やすことなく、より良い圧縮率を得るために(例外:圧縮メモリ使用量が増加する可能)プリセット-0を使用します。 .. -2)少し増加します。欠点は、圧縮時間が劇的に増加することです(簡単に2倍になります)。

答え4

tar --help: -I, --use-compress-program=PROG

tar -I 'xz -9' -cvf foo.tar.xz foo/  
tar -I 'gzip -9' -cvf foo.tar.gz foo/    

圧縮には外部圧縮機を使用することもできる。

tar -I 'lz4 -9' -cvf foo.tar.lz4 foo/
tar -I 'zstd -19' -cvf foo.tar.zst foo/

外部圧縮機の解凍:

tar -I lz4 -xvf foo.tar.lz4  
tar -I zstd -xvf foo.tar.zst  

アーカイブされた外部圧縮機のリスト:

tar -I lz4 -tvf foo.tar.lz4
tar -I zstd -tvf foo.tar.zst

関連情報