我在 Linux 环境中工作,想了解 tar 和 zip 命令。
tar 和 zip 哪个更有效?我还需要知道 tar 和 zip 命令之间的区别。有人能给我解释一下吗?
答案1
tar
gzip
只能将多个文件组合成一个文件,它不会进行压缩,除非组合使用诸如或之类的压缩程序bzip2
(您可以分别tar
使用-z
或-j
选项从内部调用它们)。zip
将归档和压缩结合在一个程序中。
答案2
柏油
- 假设您将从一端读取到另一端 - “磁带档案”。 (命令的年龄显示...)
- 不进行压缩,但您可以通过管道(例如 gzip 和 bzip2)压缩整个结果流(使用 -z 或 -j 在内部完成)
- 存储 unix 文件属性:uid、gid、权限(最值得注意的是可执行权限)。默认值可能取决于您的发行版,并且可以通过选项进行切换。
压缩
- 存储 MSDOS 属性.(存档、只读、隐藏、系统)
- 压缩每个文件,然后将它们添加到档案中
- 在文件末尾包含一个文件表
- 并且由于前两者的作用,可以只读取您需要的文件的精确部分。
事实上,zip 分别压缩文件会影响压缩率,尤其是对于许多类似的小文件。
(至少十年前这是完全正确的。)
答案3
Tar 比 Zip 保留了更多的元数据,请参阅我的比较(略微过时):
(点击放大)
Tar 通过了 65% 的测试,而 Zip 仅通过了 17%。我制作了测试套件根据 BSD 许可,可在 github 上使用如果你有 Mac,你可以自己尝试一下。对于 Linux,我不确定是否有任何元数据,因此这些测试可能不相关。
答案4
正如 Wim 所说,tar 本身不会压缩。如果您确实添加了压缩 tar(例如,获取 .tar.gz 或 .tar.bz2),那么您将一次性压缩整个 tar 文件。相比之下,zip 会单独压缩每个文件。
效率取决于工作量。具体来说,zip 允许您直接访问单个文件。使用 tar 时,您必须先查找不需要的(压缩的)文件。压缩性能取决于您要压缩的内容。 对于大量相似的文件(例如源目录), tar
使用通常更好。如果每个文件的内容非常不同,则可能会更好。bzip2
zip