全栈程序员从入门到放弃: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先归档为一个大文件,而归档为大文件的速度是很快的,测试了一下几乎可以忽略不计。在网上竟然找到了一张图,借用一下,谢谢。
除了这些格式外,常见的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
压缩,以下示例请根据需要选择压缩算法。
将当前目录下所有jpg格式的文件打包为pictures.tar
tar -cf pictures.tar *.webp
将Picture目录下所有文件打包并用gzip压缩为pictures.tar.gz
tar -czf pictures.tar.gz Picture/
将Picture目录下所有文件打包并用bzip2压缩为pictures.tar.bz2
tar -cjf pictures.tar.bz2 Picture/
彩蛋
没有彩蛋,放一个“冷”知识。
PKZIP这个软件恐怕已经很少有人知道。用zip用了那么久,有一天我就突然想是谁那么NB发明了这个算法,于是找到了PKZIP,了解到了Phil Katz,一个没落的天才,为计算机世界留下了丰厚的遗产。现在用文本编辑器看到一个zip文件,任然能看到以PK两个字母开头。