Wim*_*Wim 87
tar只从多个文件中生成一个文件,除非组合压缩程序,例如gzipor bzip2(您可以分别tar使用-zor-j选项从内部调用),否则它不会进行压缩。zip在一个程序中结合了存档和压缩。
MaH*_*uJa 62
柏油
压缩
zip 分别压缩文件这一事实会影响压缩率,尤其是在许多类似的小文件上。
(至少这在十年前是完全正确的。)
neo*_*eye 23
Tar 比 Zip 保留了更多的元数据,请参阅我的比较(有点过时):
(点击放大)
Tar 通过了 65% 的测试,而 Zip 仅通过了 17%。我已经在 BSD 许可下在 github 上提供了测试套件,所以如果你有 Mac,你可以自己尝试。对于 linux,我不确定是否有任何元数据,因此这些测试可能不相关。
Tel*_*hus 14
效率可以用不同的方式衡量:
还有其他问题,例如“操作生成的档案的工具有多常见?”
因此,例如,bzip2创建比 更小的文件gzip,但可能需要更长的时间。此外,根据我的经验gzip,在类 Unix 系统上是通用的,但bzip2仍然不是(尽管它很常见并且通常很容易获得)。
正如 Wim 所指出的,tar 本身不会压缩。如果您确实添加了 tar 压缩(例如获得 .tar.gz 或 .tar.bz2),您将一次压缩整个 tar 文件。相比之下,zip 单独压缩每个文件。
效率取决于工作量。具体来说,zip 允许您直接访问单个文件。使用 tar,您必须先查找不需要的(压缩的)文件。压缩性能取决于您要压缩的内容。 对于大量类似的文件(例如源目录),tarwithbzip2通常更好。 zip如果每个文件的内容非常不同,可能会更好。
Zip 档案在末尾包含其内容的中央目录(最有可能避免必须事先创建目录,您还不知道里面有什么)。这允许快速提取单个文件而无需解压缩整个存档:只需读取存档目录并仅提取需要的内容。但是,这要求整个存档都可以访问,并且需要仅在块设备(软盘、硬盘驱动器)上可用的随机访问。此外,存档目录容易受到攻击:如果存档因某种原因被截断,则需要大量的魔法才能从存档中提取任何有用的东西。
Zip 档案是为 BBS 使用而创建的,在这种情况下,能够将目录的内容捆绑到一个(和压缩的)文件中非常重要——而不必下载可能数以千计的单个文件。就像大多数网站即使在今天也捆绑下载,出于同样的原因。
tar 档案被设计用于捆绑用于磁带驱动器的备份,因此用于顺序访问。没有中央目录;相反,存档包含定期间隔的标题块,指示接下来的几个块中将遵循哪些文件。焦油档案旨在一举阅读;如果只提取一个文件,则按顺序读取存档,从最开始直到找到请求的文件(也可能在最后)。在此之上应用压缩;应用于 tar 档案的各种压缩程序中的每一个 ( compress, gzip,bzip2等)是流压缩器,在任何情况下都不会改变存档的顺序性质。在最坏的情况下,在开始提取之前,您需要更多的块。
这听起来像是微不足道的差异,但实际上代表了哲学上的对立面。使用 zip 档案时,总是需要手头有整个文件来做任何有用的事情,而 tar 档案可以流式传输到管道。我可以下载一个大的 tar 存档并从头开始提取它,只要前几个块进来(并且可能在我得到我正在寻找的文件后立即中断下载)。对于 Zip 存档,我必须等到存档目录出现,它出现在存档的最后。但是一旦我手头有了整个文件,从 tar 文件中提取部分内容就会快得多。
这两种格式都有一个非常适合它们的优点,具体取决于它们的使用地点和方式。由于管道(以及从一个进程到另一个进程的流数据的概念)只存在于 Unix 世界中,tar 存档的主要优势在其他系统上丢失,这就是 Zip 存档在那里更受欢迎的原因。但是 tar 档案更灵活,这就是为什么我在有选择的时候更喜欢它们。
正如另一个已经说过的,tar 为所有可以使用流压缩器(如 gzip 或 bzip2)压缩的所有文件创建一个大“块”。
这样做的缺点是您必须解压缩整个文件才能访问存档中的一个文件。
这样做的好处是压缩率通常更高,尤其是压缩文件非常相似时。
其他像“rar”这样的打包程序有一个“块模式”(或类似的)来达到同样的效果。
| 归档时间: |
|
| 查看次数: |
121114 次 |
| 最近记录: |