我正在使用旧的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文件就可以了.
解决方法:
压缩算法具有不同的压缩比,具体取决于它们正在压缩的数据的属性.例如:
$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
由大多数重复的零组成的文件可能是该算法的最佳情况.由于您获得了类似的压缩比,并且由于您的文件具有这样的圆形大小(1GB),因此图像可能比必要的大得多并且仅填充重复数据.
当然,gzip,compress,bzip2等在给定文件上都有不同的压缩比.这就是为什么许多大型开源项目提供了由不同算法压缩的多个下载 – 这样用户就可以下载他们拥有解压缩实用程序的最小文件.