共计 2261 个字符,预计需要花费 6 分钟才能阅读完成。
linux 文件压缩格式详解
压缩文件原理
在计算机科学和信息论中,数据压缩或者源编码是按照特定的编码机制用比未经编码少的数据比特(或者其它信息相关的单位)表示信息的过程。例如,如果我们将“compression”编码为“comp”那么这篇文章可以用较少的数据位表示。常见的例子是 ZIP 文件格式,此格式不仅仅提供压缩功能,还可作为归档工具(Archiver),能够将许多文件存储到同一个文件中。
简单的说,就是经过压缩软件压缩的文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的 0,1 代码减少,比如有 000000, 可以把它变成 6 个 0 的写法 60, 来减少该文件的空间。
压缩文件的基本原理是查找文件内的重复字节, 并建立一个相同字节的 ” 词典 ” 文件, 并用一个代码表示, 比如在文件里有几处有一个相同的词 ” 中华人民共和国 ” 用一个代码表示并写入 ” 词典 ” 文件, 这样就可以达到缩小文件的目的。
常见的压缩格式
- zip
ZIP 文件格式是一种数据压缩和文档储存的文件格式,原名 Deflate,发明者为菲尔·卡茨(Phil Katz),他于 1989 年 1 月公布了该格式的资料。ZIP 通常使用后缀名“.zip”,它的 MIME 格式为 application/zip。当前,ZIP 格式属于几种主流的压缩格式之一,其竞争者包括 RAR 格式以及开放源码的 7z 格式。从性能上比较,RAR 及 7z 格式较 ZIP 格式压缩率较高,而 7 -Zip 由于提供了免费的压缩工具而逐渐在更多的领域得到应用。Microsoft 从 Windows ME 操作系统开始内置对 zip 格式的支持,即使用户的计算机上没有安装解压缩软件,也能打开和制作 zip 格式的压缩文件,OS X 和流行的 Linux 操作系统也对 zip 格式提供了类似的支持。因此如果在网络上传播和分发文件,zip 格式往往是最常用的选择。
- gzip
Gzip 是若干种文件压缩程序的简称,通常指 GNU 计划的实现,此处的 gzip 代表 GNU zip。也经常用来表示 gzip 这种文件格式。软件的作者是 Jean-loup Gailly 和 Mark Adler。在 1992 年 10 月 31 日第一次公开发布,版本号 0.1,1993 年 2 月,发布了 1.0 版本
- bzip2
bzip2 是 Julian Seward 开发并按照自由软件/开源软件协议发布的数据压缩算法及程序。Seward 在 1996 年 7 月第一次公开发布了 bzip2 0.15 版,在随后几年中这个压缩工具稳定性得到改善并且日渐流行,Seward 在 2000 年晚些时候发布了 1.0 版。
- 7z
在计算机科学中,7z 是一种可以使用多种压缩算法进行数据压缩的文件格式。该格式最初被 7 -Zip 实现并采用,但是这种文件格式是公有的,并且 7 -Zip 软件本身亦在 GNU 宽通用公共许可证 (GNU LGPL) 协议下开放源代码。当前 LZMA 软件开发工具包的最新版本为 v15.12。
- rar
RAR 是一种专利文件格式,用于数据压缩与归档打包,开发者为尤金·罗谢尔(俄语:Евгений Лазаревич Рошал,拉丁转写:Yevgeny Lazarevich Roshal),RAR 的全名是“Roshal ARchive”,即“罗谢尔的归档”之意。首个公开版本 RAR 1.3 发布于 1993 年。
尤金·罗谢尔,1972 年 3 月 10 日生于俄罗斯。毕业于俄罗斯车里雅宾斯克工业大学(Chelyabinsk Technical University,今南乌拉州立大学),也是 FAR 文件管理器的作者。他开发程序压缩或解压 RAR 文件,最初用于 DOS,后来移植到其它平台。主要的 Windows 版本编码器,称为 WinRAR,以共享软件的形式发行。不过罗谢尔公开了解码器源码,UnRAR 解码器许可证以不许发布编译 RAR 兼容编码器为条件下允许有条件自由发布与修改,而 RAR 编码器一直是有专利的。
最近的开发者是尤金·罗谢尔的胞兄亚历山大·罗谢尔。虽然其解码器有专利,编译好的解压程序仍然存在于若干平台,例如开源的 7 -Zip。
常见的压缩文件压缩和解压缩
文件后缀名 | 说明 | 压缩 | 解压缩 |
---|---|---|---|
*.zip | zip 程序打包压缩的文件 | zip fileName.zip dirName | unzip fileName.zip |
*.rar | rar 程序压缩的文件 | rar a fileName.rar dirName | rar x fileName.rar |
*.7z | 7zip 程序压缩的文件 | 7z a fileName.7z dirName | 7z x fileName.7z |
*.tar | tar 程序打包,未压缩的文件 | tar cvf fileName.tar dirName | tar xvf fileName.tar |
*.gz | gzip 程序 (GNU zip) 压缩的文件 | gzip fileName | gzip -d fileName.gz |
*.bz2 | tar 打包,gzip 程序压缩的文件 | bzip2 -z FileName | bzip2 -d FileName.bz2 |
*.tar.gz | tar 打包,gzip 程序压缩的文件 | tar zcvf FileName.tar.gz dirName | tar zxvf FileName.tar.gz |
*.tar.xz | tar 打包,xz 程序压缩的文件 | tar cvJf fileName.tar.xz dirName | tar -xvJf fileName.tar.xz |
*.tar.bz2 | tar 打包,bzip2 程序压缩的文件 | tar jcvf FileName.tar.bz2 dirName | tar jxvf FileName.tar.bz2 |
*.Z | compress 命令解压缩 rar 文件 | compress fileName | uncompress fileName.Z |