tar实际压缩文件还是将它们分组在一起?


37

我通常以为这tar是一种压缩实用程序,但是我不确定,它实际上是在压缩文件吗?还是像ISO文件一样,是用来保存文件的文件?


同样在SuperUser上
allquixotic

Answers:


49

Tar是一种存档工具(Tape ARchive),它仅将文件及其元数据收集在一起,并生成一个文件。如果以后要压缩该文件,可以使用gzip / bzip2 / xz。为了方便起见,tar提供了一些参数来自动为您压缩归档文件。请查看tar手册页以获取更多详细信息。


9
答案略有澄清。GNU tar提供了这些额外的压缩参数。例如,Solaris tar不提供压缩参数。
Tero Kilkanen 2014年

5
噢,这就是为什么我不断看到thing.tar.7z
Mooing Duck 2014年

尽管BSD tar仅接受z并根据扩展名确定压缩方法,但BSD tar也提供了压缩参数,而GNU tar zZjJ为不同的压缩方法提供了单独的参数。
wingedsubmariner 2014年

2
只需阅读BSD tar联机帮助页,事实证明我错了,BSD tar zZjJ与GNU tar一样使用单独的压缩方式。但是,它在解压缩时会自动检测压缩,而GNU tar zZjJ也会期望压缩。
wingedsubmariner 2014年

5
@wingedsubmariner:不;GNU的现代版本tar无需-zZjJ选项即可自动解压缩。
乔纳森·莱夫勒

17

tar产生档案;压缩是一项单独的功能。但是 tar,当单独使用大量小于文件系统群集大小的小文件时,可以减少空间使用。如果文件系统使用1kb群集,那么即使是包含单个字节的文件也将消耗1kb(加上inode)。一个tar存档没有这方面的开销。

顺便说一句,ISO文件并不是真正的“保存文件的文件”-它实际上是整个文件系统的映像(一个最初设计用于CD的映像),因此其结构要复杂得多。


3
实际上,一个文件不会占用1kb。1-1023字节的文件将。
psusi 2014年

@psusi,因此对于字节1-1023的文件将始终消耗1024,这将浪费1023-1个字节。
Shiplu Mokaddim

2

原始UNIX tar命令未压缩归档文件。如评论中所述,Solaris tar不会压缩。HP-UX或AIX FWIW也没有。按照惯例,未压缩的档案以结尾.tar

使用GNU / Linux,您可以获得GNU tar。(您可以在其他UNIX系统上安装GNU tar。)默认情况下,它不会压缩;但是,它确实压缩用gzip(也由GNU)如果您对供应产生的存档-z。压缩文件的常规后缀为.gz,因此您经常会看到以结尾的tarball(tar存档的s语,通常表示已被压缩).tar.gz。该结尾表示运行了tar,然后运行了gzip,例如tar cf - .|gzip -9v > archive.tar.gz。您还将找到以结尾的档案.tgz,例如tar czf archive.tgz .

编辑: www.linfo.org/tar.html提醒我,GNU tar支持的功能比仅用gzip压缩要多得多,它还提醒我,后缀不仅仅是普通的约定。它们具有内置的语义。它还支持bzip2(-j适用于.bz2)和旧版compress(-Z适用于.Z)。然后,我查看了手册页,并被提醒可以-a根据后缀自动映射所需的压缩方法。

另一个尼特。正如Linux tar手册页所述,GNU生成信息页,而不是手册页,因此,要全面了解GNU tar,请运行info tar


GNU tar仍然不能单独处理压缩,它只是与gzip,bzip2,compress等之间进行管道传输。
ott-- 2015年

我看了一下消息来源。GNU tar处理压缩!该实现利用了代码重用和完善的UNIX用户空间架构原则。“ Just pipe”低估了压缩紧密集成到工具中的方式。分叉助手程序的事实是技术性的。如果您想捍卫“正义管道”,请列举文件名和行号,让我们看看社区的立场。
tbc0

我需要几天的时间才能检查该来源。
ott-- 2015年

1

除非提供参数,否则tar实用程序不会压缩[tar -z文件名]。

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.