当前位置: 首页 > 科技观察

Linux常见压缩格式Tar、Zip、Gz格式的区别

时间:2023-03-12 01:19:31 科技观察

Linux,在下载文件时,常见的压缩文件有.tar、.zip、.gz等扩展名,大多数用户都很熟悉。那么Linux中为什么会有这么多的压缩格式,Tar、Zip、Gz的区别和区别又是什么呢?本系统小白一一告诉你。Tar、Zip和Gz格式之间的区别Tar、Zip和Gz之间的区别可以用最简洁的描述来概括:tar未压缩的存档zip(通常)压缩的存档gz用gzip压缩的文件(存档或不存档)存档文件与Unix和类Unix系统有着相同的历史,故事开始于很久以前的七十年代。1979年1月的一个早晨,Tar实用程序***作为UnixV7的一部分正式发布。Tar程序主要是作为一种有效地将文件批量写入磁带的方法而设计的。现在,虽然现在大多数Linux用户都不知道磁带驱动器是什么,但tarball(tar的昵称)仍然常用于将多个文件甚至整个目录树打包到一个文件中。Linux/Unix用户请注意,普通的tar格式文件只被归档,不被压缩。换句话说,如果您对100个50kb的文件进行tar,则生成的tar存档大小应该在5000kb左右。使用Tar进行文件归档的唯一好处是减少了一些粒度磁盘空间的分配。(比如一个1字节的文件在一个簇大小为4kb的磁盘上也占用4kb的磁盘空间,如果有1000个1字节的文件散落在这个磁盘上,就会占用4MB。使用Tar归档后只需要大约1MB左右。)值得一提的是,tar并不是在Linux/Unix中创建存档的唯一方法。程序员朋友应该都知道ar,大多数情况下主要用来创建静态库。事实上,它也可以用来创建其他类型的档案。比如Debian系统中使用的.deb包文件就是ar包。macOS的mpkg包是一个用gzip压缩的cpio文件。但是ar和cpio没有tar那么友好和简单易用,所以tar更受欢迎,也更受欢迎。虽然存档是一个不错的选择,但随着时间的推移和个人PC的出现,人们意识到通过压缩数据可以显着节省存储成本。因此,10年后随MS-DOS出现的zip文件是一种支持压缩的归档格式。zip最常见的压缩方式是LZ77算法实现的deflate。由于它是由PKWARE商业开发的,因此zip格式也获得了多年的专利。因此,为了不侵犯PKWARE的专利,同样使用LZ77算法的gzip格式被引入并广泛使用。Unix哲学是做最好的事情,所以gzip只是设计来压缩文件。因此,为了创建压缩存档,必须先使用tar创建存档,然后压缩存档,因此生成.tar.gz文件(也缩短为.tgz以符合8.3MS-DOS文件名限制)。随着技术的不断发展,压缩比更高的压缩算法被一一实现,例如:bzip2(.tar.bz2压缩包)中实现的Burrows-Wheeler算法和.xz压缩包中实现的LZMA算法。用户现在可以在Linux和Windows中自由使用任何归档文件格式。由于Windows操作系统已经原生支持zip格式,因此这种格式特别适合跨平台环境。Tar、Zip和Gz格式效率测试下面我们讨论的是Tar、Zip和Gz文件格式压缩,归档后的磁盘空间效率而不是时间效率。下面是100MB流行格式文件的测试对比:mp4已经是压缩包文件了,所以打包压缩的效果不会太好。