在 Linux/Unix 上,.tar.gz 与 .zip 有关系吗?

在 Linux/Unix 上,.tar.gz 与 .zip 有关系吗?

跨平台程序有时会以 .tar.gz(Unix 版本)和 .zip(Windows 版本)的形式发布。当两者的内容必须不同时,这种做法很有意义。

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

答案1

是的,这很重要。
实际上,这要视情况而定。

压缩文件

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

压缩

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

因为 zip 单独压缩文件,所以 zip 存档很可能具有较大的大小(尤其是包含许多较小的文件 - 例如配置文件)。

因此,您会看到,除了文件大小之外,如果您在 Linux/Unix 上压缩一堆文件,然后解压缩它们,文件属性将消失(至少是 MS-DOS 不支持的属性 - 取决于您使用的 ZIP 软件)。这可能很重要,也可能不重要,在这种情况下它无关紧要(因为文件大小差异在大多数情况下可以忽略不计)。

笔记:
显然,现代版本的 ZIP 还存储 Unix 文件属性(取决于您的 ZIP 软件),因此对于现代 zip 软件来说,文件大小是唯一的区别。

答案2

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

答案3

目前大多数流行的 Linux 发行版都默认配备了zip兼容性。但正如 nc3b 所说,targzip在 Linux/Unix 系统上更常见。如果您需要这些系统上的 95% 兼容性,请考虑使用targzip。如果您只需要 85%,zip就足够了。

答案4

基本 Unix 安装不包含解压缩(即服务器安装),但它们总是包含柏油压缩。如果你的受众是服务员,我会选择压缩

压缩压缩性大于压缩,因此文件会更小。

相关内容