ncompressはファイルを99.99%の割合で圧縮できますか?

ncompressはファイルを99.99%の割合で圧縮できますか?

以前のバージョンを使用してncompressバックアップファイルを作成しています。私が見たのは驚きました。

[root@centos6 home]# ll -l -b mytest*
-rw-r--r--. 1 root root 1073741824 Mar  8 13:41 mytest.iso
-rw-r--r--. 1 root root      88099 Mar  9 10:26 mytest.iso.bak.Z

これは私が使用するコマンドです:

compress -c mytest.iso>mytest.iso.bak.Z

mytest.iso(実際にはcentos6.8-livecd.iso)サイズが1073741824(1.0G)から88099(87K)に変更されました。

しかし、私が使用するとき:

tar -cvf mytest.iso.tar.gz mytest.iso

tar.gzファイルのサイズは大幅に変更されませんでした。

-rw-r--r--. 1 root root 1073745920 Mar  9 10:43 mytest.tar.gz

これは普通ですか? isoファイルを解凍するとうまく機能します。

答え1

圧縮アルゴリズムは、圧縮するデータの属性によって圧縮率が異なる。たとえば、

$ dd if=/dev/zero of=test.img bs=1m count=1024
$ compress -c test.img > test.img.Z
$ gzip -c test.img > test.img.gz
$ wc -c test.img test.img.gz test.img.Z
 1073741824 test.img
    4685486 test.img.gz
      84781 test.img.Z
 1078512091 total

このアルゴリズムの最良のケースは、おそらくほとんど繰り返されるゼロで構成されるファイルです。同様の圧縮率が得られ、ファイルサイズが大きすぎるため(1 GB)、画像が必要なものよりはるかに大きく、冗長データで埋められる可能性が高くなります。


もちろん、、、gzipおよびcompressその他bzip2のファイルはすべて、特定のファイルに対して異なる圧縮率を持ちます。これは、多くの大規模なオープンソースプロジェクトが、ユーザーが解凍ユーティリティを使用して最小のファイルをダウンロードできるように、さまざまなアルゴリズムで圧縮された複数のダウンロードを提供する理由です。

関連情報