在 Linux/Unix 上,.tar.gz 与 .zip 重要吗?

rwa*_*ace 86 linux unix zip

跨平台程序有时以 .tar.gz 分发给 Unix 版本,和 .zip 分发给 Windows 版本。当每个的内容必须不同时,这是有道理的。

但是,如果内容将相同,则只需下载一次会更简单。Windows 更喜欢 .zip,因为这是它可以立即处理的格式。它在 Unix 上重要吗?也就是说,我今天尝试在 Ubuntu Linux 上解压缩一个文件,它运行良好;在任何当前的类 Unix 操作系统上是否有任何问题,或者只提供一个 .zip 文件是否可以?

Qua*_*ary 51

是的,这很重要。
实际上,这取决于。

tar.gz

  • 存储 unix 文件属性:uid、gid、权限(最值得注意的是可执行文件)。默认值可能取决于您的发行版,并且可以使用选项进行切换。
  • 将所有要存档的文件合并到一个文件中(“磁带存档”)。
  • 实际压缩由 GZIP 完成,在一个 .tar 文件上

压缩

  • 存储 MSDOS 属性。(存档、只读、隐藏、系统)
  • 单独压缩每个文件,然后将单独压缩的文件合并为一个文件
  • 在文件末尾包含文件表

因为 zip 单独压缩文件,所以 zip-archive 很可能具有更大的尺寸(特别是对于许多较小的文件 - 想想配置文件)。

所以你看,从文件大小来看,如果你在 Linux/Unix 上压缩一堆文件,然后解压它们,文件属性就会消失(至少那些不受 MS-DOS 支持的 - 取决于什么 ZIP -您使用的软件)。这可能很重要,也可能不重要,在这种情况下无关紧要(因为文件大小差异在大多数情况下可以忽略不计)。

  • 类 Unix 系统上的 zip 标准发行版 (info-zip) 也存储了 unix 文件属性。 (13认同)
  • ZIP 格式,例如通过 Unix“zip”和“unzip”实用程序,确实总是存储和恢复 Unix 文件权限。此外,除非您提供“-DD”选项,否则“unzip”会恢复 Unix 文件时间戳,如果提供“-X”选项,“unzip”甚至会恢复 UID 和 GID。 (5认同)

小智 35

tar gz 更适合 Linux/Unix,因为它保留了权限,例如对脚本的“可执行”权限。

  • OS X 的存档实用程序和 zip/unzip 保留权限,但可能还有其他实用程序没有。 (10认同)
  • 标准 zip/unzip 工具 (info-zip) 在 linux 上保留权限,在 windows 上保留时间戳。参见:https://en.wikipedia.org/wiki/Info-ZIP 了解典型功能......它克服了权限问题和文件大小限制,同时保留了理想的随机访问和可编辑的存档属性。 (6认同)

Pyl*_*lsa 32

现在最流行的 Linux 发行版默认都具备zip兼容性。但正如nc3b陈述,targzip更常见的Linux / Unix系统。如果您需要在这些系统上实现 95% 的兼容性,请考虑使用targzip。如果你只需要 85%,zip就可以了。

  • 扩展名无所谓,仅供用户和程序参考使用。如果扩展名是 .XXX 并且您知道它是 .tar,您仍然可以使用 tar 来解压它。.tgz 和 .tar.gz 实际上都是相同的扩展名,具有这些扩展名的文件将是相似的。 (8认同)
  • tar 将存储 uid、gid 和权限,例如 unix 系统上的 +x。zip 在 Windows 系统上存储存档、只读、隐藏和系统。 (3认同)
  • 好的,95% 比 85% 好 :-) 一个非常小的问题,如果文件扩展名是 .tgz 而不是 .tar.gz 有关系吗? (2认同)
  • 另一方面,要在 Windows 上实现 100% 兼容性,您需要使用 cab。 (2认同)

Eri*_*sty 24

tar/gzip 是一种非常糟糕的格式,因为存档不能被随机访问、更新、验证甚至附加到......而不必解压缩整个存档。

zip 在这方面要好得多……您可以快速获取 zip 文件的内容,无需重新压缩第一部分即可附加到该文件中,等等。

zip 有一些大小限制......取决于您使用的“zip”版本......这些可能是一个问题。但是大多数类似 linux 的操作系统附带的标准 info-zip 工具没有大小限制并且可以很好地保留文件权限。

请参阅:https : //en.wikipedia.org/wiki/Info-ZIP了解功能


Rwk*_*wky 9

准系统 Unix 安装不包含解压缩(即服务器安装),但它们总是包含targzip。如果您的受众是服务器,我会选择gzip

此外gzipzip具有更大的压缩率,因此文件会更小。

  • 嗯,tar.gz 会一次性压缩整个文件,而 zip 会单独压缩文件。对于许多小文件,第一种方法通常会生成明显更小的文件,因为可以跨文件使用冗余。不过差别不是很大。 (6认同)
  • 我不会说 gzip 比 ZIP 压缩得更好。两者都使用相同的 DEFLATE 算法,并且我所做的所有比较都在文件大小方面给出了相似的结果。 (2认同)
  • @sleske 实际上 gzip 有一个非常小的窗口大小 (32K) 用于查找冗余,它不是整个文件 (2认同)

小智 5

是的,这很重要。Tar 是一个存档器。在 tar.gz 中,我们压缩该存档。

Zip 既是存档器又是压缩器。

如果比较压缩,根据我的经验,gzip 比 zip 好得多。

另一个答案中提到了另一个显着差异。如果您有一个非常大的文件存档,并且想要提取一个小文件,Zip 允许您这样做。但是使用 tar.gz,您需要提取整个存档。