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


69

跨平台程序有时以Unix版本的.tar.gz和Windows版本的.zip的形式分发。当每个的内容必须不同时,这才有意义。

但是,如果内容相同,则只需下载一个即可。Windows首选.zip,因为它是开箱即用的格式。在Unix上有关系吗?也就是说,我今天尝试在Ubuntu Linux上解压缩文件,并且工作正常。在任何当前的类似Unix的操作系统上,这有什么问题吗?还是只提供一个.zip文件就可以了吗?

Answers:


28

死灵法师。
是的,这很重要。
实际上,这取决于。

tar.gz

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

压缩

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

由于zip分别压缩文件,因此zip归档文件最有可能具有较大的大小(尤其是对于许多较小的文件-请考虑配置文件)。

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


10
类似Unix的系统上的zip标准发行版(info-zip)也存储unix文件属性。
Erik Aronesty

35

tar gz对于Linux / Unix更好,因为它保留了权限,例如脚本上的“可执行文件”。


8
OS X的存档实用程序和zip / unzip保留权限,但是可能还有其他实用程序没有。
Lri 2013年

4
标准的zip / unzip工具(信息zip)在linux上保留权限,在Windows上保留时间戳。有关典型功能,请参见:en.wikipedia.org/wiki/Info-ZIP ...该功能克服了权限问题和文件大小限制,同时保留了所需的随机访问和可编辑的存档属性。
Erik Aronesty

33

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


2
好的,95%优于85%:-)一个非常小的问题,如果文件扩展名是.tgz而不是.tar.gz,那根本不重要吗?
rwallace 2010年

8
扩展根本没有关系,它只是供用户和程序参考。如果扩展名是.XXX并且您知道它是.tar,则仍可以使用tar解压缩它。.tgz和.tar.gz实际上都是相同的扩展名,具有这些扩展名的文件将是相似的。
BloodPhilia 2010年

2
另一方面,要在Windows上实现100%的兼容性,则需要使用cab。
kinokijuf 2011年

3
tar将存储uid,gid和权限,例如在unix系统上的+ x。zip在Windows系统上存储归档文件,只读文件,隐藏文件和系统文件。
安德鲁·德·安德拉德

1
@mtak你总是可以只使用gunzip --suffix .zip npm-debug.log.zip或者gunzip -c < npm-debug.log.zip > npm-debug.log
伊万奥康

19

tar / gzip是一种糟糕的格式,因为无法随意解压缩,更新,验证甚至不能将档案附加到...,而不必解压缩整个档案。

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

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

有关功能,请参见:https//en.wikipedia.org/wiki/Info-ZIP


您在说什么限制?
Pacerier,2014年

编辑并提供了链接
Erik Aronesty '18

9

准系统Unix安装不包含解压缩(即服务器安装),但是它们始终包含targzip。如果您的受众是服务器,那么我会推荐gzip

而且gzip的压缩比zip更大,因此文件会更小。


1
我不会说gzip的压缩比ZIP更好。两者都使用相同的DEFLATE算法,我所做的所有比较都在文件大小上给出了相似的结果。
grawity

4
好吧,tar.gz将一次性压缩整个文件,而zip分别压缩文件。对于许多小文件,第一种方法通常会生成明显较小的文件,因为可以在文件之间使用冗余。差别不大。
sleske 2010年

3

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

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

如果比较压缩,以我的经验来看,gzip比zip好得多。

另一个答案是另一个明显的区别。如果您的文件存档很大,并且想提取一个小文件,则Zip允许您执行此操作。但是,使用tar.gz,您需要提取整个存档。


不是gzip压缩文件的存档,而是gzip存档文件的存档。这就是为什么您必须提取整个存档的原因。
m93a 2015年


1

targzip很多比较常见的在* nix-ES比unzip。例如,在我的arch-2009.08上,目前没有unzip


6
但是有bsdtar(的一部分libarchive)可以很好地处理ZIP。
grawity 2010年

糟糕:“>不知道。谢谢!:-)
nc3b 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.