我制作了两个我的文件夹的压缩副本,首先使用命令tar czf dir.tar.gz dir
这给了我一个大小约16kb的档案。然后我尝试了另一种方法,首先我在dir中解压缩了所有文件然后使用
gzip ./dir/*
tar cf dir.tar dir/*.gz
但是第二种方法给了我dir.tar大小〜30kb(几乎是两倍)。为什么这么大的差异呢?
答案 0 :(得分:6)
因为一般来说,zip过程在大样本上比在小文件上更有效。例如,您已经压缩了100个1ko文件。每个文件都有一定的压缩,加上overhead of the gzip format。
file1.tar -> files1.tar.gz (admit 30 bytes of headers/footers)
file2.tar -> files2.tar.gz (admit 30 bytes of headers/footers)
...
file100.tar -> files100.tar.gz (admit 30 bytes of headers/footers)
------------------------------
30*100 = 3ko of overhead.
但是如果你试图压缩一个100ko的tar
文件(包含你的100个文件),gzip格式的开销只会增加一次(而不是100次),压缩会更好)
答案 1 :(得分:2)
gzip
处理文件时gzip
的每个文件元数据和次优压缩的开销,因为{{1}}没有完整地观察数据,因此使用次优字典压缩(在每个文件之后重置)。
答案 2 :(得分:-1)
tar cf
应该创建一个未压缩的存档,这意味着您的目录的大小应该与您的存档几乎相同,甚至更多。
tar czf
将通过它运行gunzip
压缩。
这可以通过在Linux中的shell提示符中执行man tar
进一步检查,
-z, --gzip, --gunzip, --ungzip
filter the archive through gzip