Linux常见压缩格式Tar、Zip和Gz格式之不同

Linux 中大家在下载文件时常见的压缩文件有 .tar、.zip 或 .gz 等扩展名,大多数用户都已经见怪不怪了。那 Linux 中为什么要搞出这么多种压缩格式,Tar、Zip 和 Gz 之间到底有什么区别与不同呢?本文系统极客就为大家一一道来。

Tar、Zip和Gz格式的不同

Tar、Zip 和 Gz 之间的不同用最为简洁的描述来说可归纳为:

  • tar 未压缩的归档文件
  • zip (通常)压缩归档文件
  • gz 使用gzip压缩的文件(归档或不归档)

存档文件的历史

与 Unix 和类 Unix 系统一样,故事开始于很久之前的七十年代。1979 年 1 月的一个清晨,Tar 实用程序首次作为 Unix V7 的一部分正式面世。Tar 程序当时主要被设计为往磁带上批量高效写入文件的一种方式。现在,虽然现在大多数 Linux 用户都已经不知道磁带驱动器是什么鬼了,但 tarballs(tar 的昵称)仍被常用于将多个文件甚至整个目录树打包到单一文件当中。

需要 Linux/Unix 用户注意的是,普通的 tar 格式文档只进行归档操作而不进行压缩。换句话说就是,如果你 tar 100 个 50kb 的文件得到的 tar 归档文件大小应该为 5000kb 左右。

使用 Tar 进行文件归档的唯一好处就是减少某种粒度磁盘空间的分配。(例如在簇大小为 4kb 的磁盘上 1 字节的文件也要占用 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 文件(为遵循 8.3 MS-DOS 文件名称限制,又被简称为.tgz)。

随着技术的不断发展,具有更高压缩比的压缩算法也一一被实现,例如:在 bzip2 中实现的 Burrows-Wheeler 算法(.tar.bz2 存档)和 LZMA 算法实现的 .xz 存档。

现在,用户已经可以在 Linux 和 Windows 中自由使用任何归档文件格式。由于 zip 格式已经被 Windows 操作系统原生支持,因此这种格式特别适合跨平台环境。

Tar、Zip和Gz格式效率测试

下面我们所讨论的是 Tar、Zip 和 Gz 文件格式压缩、归档后的磁盘空间效率而不是时间效率,如下是对 100MB 流行格式文件的测试对比:

由于 jpg、mp3、mp4 已经是压缩封装的文件,所以再打包压缩的效果一定不会太好。

本文作者:佚名

来源:51CTO

时间: 2024-12-31 02:58:57

Linux常见压缩格式Tar、Zip和Gz格式之不同的相关文章

Linux 压缩(打包)文件夹 tar/zip

tar 压缩方法: tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件. zip 压缩方法: 压缩当前的文件夹 zip -r ./xahot.zip ./* -r表示递归 zip [参数] [打包后的文件名] [打包的目录路径] 解压 unzip xahot.zip 不解释 linux zip命令的基本用法是: linux zip命令

在Linux系统中使用tar命令压缩和解压文件的教程

  linux中的tar命令 tar(磁带归档)命令是linux系统中被经常用来将文件存入到一个归档文件中的命令. 其常见的文件扩展包括:.tar.gz 和 .tar.bz2, 分别表示通过了gzip或bzip算法进一步进行了压缩. 在本教程中我们会管中窥豹一下在linux桌面或服务器版本中使用tar命令来处理一些创建和解压归档文件的日常工作的例子. 使用tar命令 tar命令在大部分linux系统默认情况下都是可用的,所以你不用单独安装该软件. tar命令具有两个压缩格式,gzip和bzip,

Linux 下压缩与解压.zip和.rar及.7z文件

对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1)对于.zip linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序.它们的参数选项很多,可用命令zip -help和unzip -help查看,这里只做简单介绍,举例说明一下其用法: # zip yajiu.zip yajiu.jpg yajiu.png 这条命令是将yajiu.jpg和yajiu.png压缩成一个zip包 # zip yajiu.zip *.jpg 这条命令

PHP解压tar.gz格式文件的方法_php技巧

本文实例讲述了PHP解压tar.gz格式文件的方法.分享给大家供大家参考,具体如下: 1.运用php自带压缩与归档扩展(phar) $phar = new PharData('song.tar.gz'); //路径 要解压的文件 是否覆盖 $phar->extractTo('c:/tmp', null, true); 2.首先需要安装pear类管理工具 linux下 /usr/local/php/bin/pear install Archive_Tar wamp默认没有安装pear,  go-p

linux下解压jdk.tar.gz

问题描述 linux下解压jdk.tar.gz 今天在linux下下载了jdk,但是通过tar命令解压一直出问题,求助一下各位大牛具体的目录,操作和报错如下:百度过,好像没找到解决方案 解决方案 你直接去要解压的目录下打 tar zxvf FileName.tar.gz 建议打前先file下文件确认下格式是否对 命令里不要带目录 如果还报错,那个就是文件坏了,没下完整之类的 解决方案二: 你这个文件都不是gzip格式,所以解压出错了. 解决方案三: 命令打错了 解压之后的目录放在后面 解决方案四

设置WinRAR的默认压缩格式为ZIP的方法

  WinRAR是我们平常生活工作中非常常见的一种压缩解压缩软件,一般它默认的压缩包都是RAR格式的,但是我们生活中经常用到的ZIP格式的压缩文件,所以我们需要设置它的默认压缩格式. 设置WinRAR的默认压缩格式为ZIP的方法: 设置 WinRAR 压缩文件管理器:打开WinRAR选择"选项"-"设置", 在弹出的设置窗口中依次点击"压缩选项" "创建默认配置--" 将"档案文件类型"从RAR修改为ZIP

Linux常见的压缩命令

  gzip 采用gzip压缩的文件扩展名为.gz,它的语法如下: gzip [-cdtv#] filename -c:压缩 -d:解压缩 -t:检验文件的一致性 -v:显示压缩比等消息 -#:压缩等级,取值范围为1~9,其中9压缩率最高,默认为6 使用gzip要注意:默认情况下原文件将不复存在,这要非常小心,如果要保留原文件,需要如下操作: gzip -c man.config > man.config.gz 还有一点:默认的压缩比6已经足够好了,一般不建议修改. 如果你想查看压缩文件.gz里

Linux下压缩/解压方法大全

  linux下压缩包格式繁多,并且在命令行下没有Windows下使用那么方便,有时候解压文件的时候会突然忘掉命令,这里fcbu.com为大家收集了基本所有文件格式的解压方法和打包命令.需要的可以参考一下: .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar只是打包,没有经过压缩的!) --------------- .gz 解压1:gunzip FileName.gz 解压2:gzip -d FileName.

19个Linux备份压缩命令

Linux下备份压缩命令用得很多,但是有时会忘记此命令的正确用法和一些注意事项.最近用得比较多,总结一下. 1. Linux ar命令 Linux ar命令用于建立或修改备存文件,或是从备存文件中抽取文件. ar可让您集合许多文件,成为单一的备存文件.在备存文件中,所有成员文件皆保有原来的属性与权限. 语法 ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件] 2. Linux bunzip2命令 L