tar.gzは大容量ファイルに対して効率的なファイル圧縮を実行しますか?

tar.gzは大容量ファイルに対して効率的なファイル圧縮を実行しますか?

tar〜29GBのファイルを大幅に圧縮し、端末で次のコマンドを使用したいと思います。

 tar cvzf file.tar.gz /path/to/directory

〜26GBに圧縮してインターネットで最大圧縮率を見つけて、次のことを行いました。

 export GZIP=-9
 env GZIP=-9 tar cvzf file.tar.gz /path/to/directory

ただし、tar.gzファイルのサイズは、プロパティに約26GBで表示されます。今回は10GB程度に圧縮されると思います。ここで何か抜けましたか?

答え1

私はデフォルトの組み込み圧縮率を決して使用しません。アンパッカーが数百MBのRAMをxz収容できることを知っている場合gzip

だから私の提案は tar圧縮されていない出力をパイプすることですxz -9

圧縮にはより多くのCPU時間が必要ですが、解凍するとCPU時間が少なくなりますgzip。テキストファイルの場合、圧縮は25〜30%向上します。

答え2

はい、そうです。

tarが提供する他の圧縮形式を試すこともできます。私のLinuxシステムでは、GNU tarはこれらの多様性を提供します。つまり、gzip -929 GB -> 26 GBしか達成できない場合、他の圧縮形式は必要な29 GB -> 10 GBを達成する可能性はありません。

$ tar --help|grep -A16 Compression
 Compression options:

  -a, --auto-compress        use archive suffix to determine the compression
                             program
  -I, --use-compress-program=PROG
                             filter through PROG (must accept -d)
  -j, --bzip2                filter the archive through bzip2
  -J, --xz                   filter the archive through xz
      --lzip                 filter the archive through lzip
      --lzma                 filter the archive through lzma
      --lzop
      --no-auto-compress     do not use archive suffix to determine the
                             compression program
  -z, --gzip, --gunzip, --ungzip   filter the archive through gzip
  -Z, --compress, --uncompress   filter the archive through compress

 Local file selection:
$

関連情報