打包和压缩
其实很简单的:甭管是打包还是压缩,参数一般以 vf 结尾,后跟包名称;打包的情况就是从 c(打包) x(解包) t(查看) 中挑一个;有压缩的话再从 z(gzip) j(bzip2) 中挑一个。Ok, 打完收工。
- 如果打包的文件很多很多,造成刷屏,就需要把 v 参数去掉;
- 包中追加(r)、更新(u)内容,使用率一般不是很高;
打包和压缩是两个概念。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
linux下最常用的打包程序就是 tar 了,使用 tar 程序打出来的包我们常称为 tar 包,tar 包文件通常都是以 .tar 结尾的。生成 tar 包后,就可以用其它的程序来进行压缩。
打包命令 tar
首先就来讲讲 tar 命令的基本用法:
tar 命令的选项有很多(用 man tar
可以查看到),但常用的就那么几个选项,下面来举例说明一下:
1 | tar -cf all.tar *.jpg |
语法
语法:tar [主选项+辅选项] 文件或者目录
使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。
主选项:
1 | -c: 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。 |
这五个是独立的命令,打包拆包都要用到其中一个,可以和别的命令连用但只能用其中一个。
辅助选项:
1 | -v :打包/拆包的过程中显示文件,这个常用 |
参数 -f
是必须的!
为了方便用户在打包解包的同时可以压缩或解压文件,tar 提供了一种特殊的功能。这就是 tar 可以在打包或解包的同时调用其它的压缩程序,比如调用 gzip、bzip2 等。
压缩命令
有很多个……
gzip
gzip 是 GNU 组织开发的一个压缩程序,.gz 结尾的文件就是 gzip 压缩的结果。与 gzip 相对的解压程序是 gunzip。tar 中使用 -z
这个参数来调用 gzip。下面来举例说明一下
1 | tar -czf all.tar.gz *.jpg |
bzip2
bzip2 是一个压缩能力更强的压缩程序,.bz2 结尾的文件就是 bzip2 压缩的结果。与 bzip2 相对的解压程序是 bunzip2。tar 中使用 -j
这个参数来调用 gzip。下面来举例说明一下:
1 | tar -cjf all.tar.bz2 *.jpg |
compress
compress 也是一个压缩程序,但是好象使用 compress 的人不如 gzip 和 bzip2 的人多。.Z 结尾的文件就是 compress 压缩的结果。与 compress 相对的解压程序是 uncompress 。tar 中使用 -Z
这个参数来调用 compress。下面来举例说明一下:
1 | tar -cZf all.tar.Z *.jpg |
汇总
下面的参数是根据需要在压缩或解压档案时可选的。
1 | -z:是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz |
拆包/解压缩
下面对于 拆包/解压缩 做一个小结:
对于 .tar 结尾的文件
1
tar -xf all.tar
对于 .gz 结尾的文件
1
2gzip -d all.gz
gunzip all.gz对于 .tgz 或 .tar.gz 结尾的文件
1
2tar -xzf all.tar.gz
tar -xzf all.tgz对于 .bz2 结尾的文件
1
2bzip2 -d all.bz2
bunzip2 all.bz2对于 tar.bz2 结尾的文件
1
tar -xjf all.tar.bz2
对于 .Z 结尾的文件
1
uncompress all.Z
对于 .tar.Z 结尾的文件
1
tar -xZf all.tar.z
特殊范例
此章节中不在严格区分打包/压缩,拆包/解压 字面,不再咬文嚼字。
- 将某一目录下的压缩文件解压到另一目录;将某一目录下的打包文件解包到另一目录;
- 只解压压缩包中的个别文件,而非全部;
- 要压缩某一目录,但个别文件除外;
- 改变工作目录,神奇的 C 参数(大写,不是 c);
以上情况,因为在实际使用中涉及过少,不在此详述。参考 linux下使用tar命令 范例三、四、五 及其后续
Windows 下的压缩文件
对于Window下的常见压缩文件 .zip 和 .rar,Linux 也有相应的方法来解压它们:
.zip
linux 下提供了 zip 和 unzip 程序,zip 是压缩程序,unzip 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
1 | zip all.zip *.jpg |
.rar
要在 linux 下处理 .rar 文件,需要安装 RAR for Linux,RAR for Linux 不是免费的;
下载之后解压直接 make 就安装好了,安装后就有了 rar 和 unrar 这两个程序,rar 是压缩程序,unrar 是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:
1 | rar a all *.jpg |
结束
到此为至,我们已经介绍过 linux 下的 tar、gzip、gunzip、bzip2、bunzip2、compress 、 uncompress、 zip、unzip、rar、unrar 等程式,你应该已经能够使用它们对 .tar 、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、. Z、.tar.Z、.zip、.rar 这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在 Linux 下解开而烦恼了。而且以上方法对于 Unix 也基本有效。
以上主要参考自:
linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
前半部分介绍思路清晰,奉行“拿来主义”只对排版略作调整。后部分所谓“以下补充”太过滥竽充数,估计这篇文章不是原帖。
The End
其实很简单的:甭管是打包还是压缩,参数一般以 vf 结尾,后跟包名称;打包的情况就是从 c(打包) x(解包) t(查看) 中挑一个;有压缩的话再从 z(gzip) j(bzip2) 中挑一个。Ok, 打完收工。
- 如果打包的文件很多很多,造成刷屏,就需要把 v 参数去掉;
- 包中追加(r)、更新(u)内容,使用率一般不是很高;
想要更详细的,哥哥啊,你干嘛不 man tar
呢。就一个命令,从网上查查常用法、惯用伎俩,要想再多懂一些就别再网上折腾了,浪费时间啊,老老实实 man ,最不济 –help 也行啊