全栈程序员Linux笔记:文件压缩和解压缩总结-文件压缩

全栈程序员从入门到放弃:Linux 已经很久没有接触过了,文件的压缩和解压缩这么常用的东西竟然记不得tar了,趁着学习的机会重新拾起,尽量每篇都放一个“彩蛋”。

常用文件格式

  • .tar:tar其实打包(或翻译为归档)文件,本身并没有压缩。在Linux里 man tar 可以看到它的描述也是“manipulate tape archives”(tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,只是它的描述还没有改)。

  • .gz:gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。

  • .bz2:bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。

  • .Z:compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是compress压缩的结果。

  • .zip:啰嗦了,就是使用zip软件压缩的文件。

.tar.gz、.tar.bz2等可以理解为打包+压缩的效果,用软件解压可以发现比.gz多了一层包。gzip和bzip2,不能同时压缩多个文件,tar相当于开个挂加上同时压缩的特效,tar先归档为一个大文件,而归档为大文件的速度是很快的,测试了一下几乎可以忽略不计。在网上竟然找到了一张图,借用一下,谢谢。

全栈程序员Linux笔记:文件压缩和解压缩总结

可能因为这张图文章发布不了,程序员联盟别害我

除了这些格式外,常见的deb、exe、msi、rpm、dmg、iso等安装软件,其实都是经过压缩的,一般情况下没有必要再压缩。而rar基本认为是Windows平台专属的压缩算法了,各个 Linux 发行版都不自带rar压缩解压缩软件,所以可以看到很多软件发行的格式都是 .tar.gz 或 .zip。

常用用法

如果想了解更详细的用法就找个真实的机器,执行man tar 查看详细的说明,如果想快速入手的话,会下面这几个就够了。

解压缩,以下示例请根据文件名后缀自行选择解压缩命令

tar -xf test.tar

gzip -d test.gz

gunzip test.gz

tar -xzf test.tar.gz

bzip2 -d test.bz2

bunzip2 test.bz2

tar -xjf test.tar.bz2

压缩,以下示例请根据需要选择压缩算法。

  1. 将当前目录下所有jpg格式的文件打包为pictures.tar

    tar -cf pictures.tar *.webp

  2. 将Picture目录下所有文件打包并用gzip压缩为pictures.tar.gz

    tar -czf pictures.tar.gz Picture/

  3. 将Picture目录下所有文件打包并用bzip2压缩为pictures.tar.bz2

    tar -cjf pictures.tar.bz2 Picture/

彩蛋

没有彩蛋,放一个“冷”知识。

PKZIP这个软件恐怕已经很少有人知道。用zip用了那么久,有一天我就突然想是谁那么NB发明了这个算法,于是找到了PKZIP,了解到了Phil Katz,一个没落的天才,为计算机世界留下了丰厚的遗产。现在用文本编辑器看到一个zip文件,任然能看到以PK两个字母开头。

推荐阅读