【问题标题】:Difference in .tar.gz and first gz and then tar.tar.gz 和先 gz 然后 tar 的区别
【发布时间】:2014-02-12 19:06:00
【问题描述】:

我制作了我的文件夹的两个压缩副本,首先使用命令tar czf dir.tar.gz dir 这给了我一个大小约为 16kb 的档案。然后我尝试了另一种方法,首先我将目录中的所有文件都压缩了,然后使用了

gzip ./dir/*
tar cf dir.tar dir/*.gz

但是第二种方法给了我大小约为 30kb(几乎是两倍)的 dir.tar。为什么大小差别这么大?

【问题讨论】:

  • 我会创建两个临时目录并解压缩/解压缩您认为已压缩的每个项目。在继续之前,如果您能确认您确实将您想要拉上的所有东西都拉上了拉链,并且不多/不少,我将不胜感激。谢谢。
  • 我使用 gzip 压缩目录中的每个文件

标签: linux tar gunzip


【解决方案1】:

因为通常 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次),压缩效果会更好)

【讨论】:

    【解决方案2】:

    gzip 在单独处理文件时产生的每个文件元数据的开销和次优压缩是由于 gzip 未完整观察数据并因此使用次优字典进行压缩(在每个文件后重置)。

    【讨论】:

      【解决方案3】:

      tar cf 应该创建一个未压缩的存档,这意味着您的目录的大小应该与您的存档几乎相同,甚至更多。

      tar czf 将通过它运行gunzip 压缩。

      这可以通过在 Linux 的 shell 提示符下执行 man tar 来进一步检查,

         -z, --gzip, --gunzip, --ungzip
                filter the archive through gzip
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-13
        相关资源
        最近更新 更多