我正在使用旧的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
对于该算法来说,最好的情况可能是由大部分重复的零组成的文件。由于您获得了相似的压缩比,并且您的文件大小如此之大 (1GB),因此图像很可能比所需的大得多,并且仅填充了重复的数据。
当然,gzip
、compress
、bzip2
和其他文件对给定文件都有不同的压缩比。这就是为什么许多大型开源项目提供多种由不同算法压缩的下载,以便用户可以下载他们具有解压缩实用程序的最小文件。