说明
- 压缩或者解压文件和目录只需要一条简单的命令,例如:
* 压缩
tar zxcf xxx.tar.gz xxx
zip -q -r xxx.zip *
* 解压
tar jxvf xxx.tar.bz2
unzip xxx.zip
- 压缩和解压是站在用户目标角度的命名,但是从技术角度而言,压缩操作可以分为两个行为:归档和压缩,解压操作分为:解压和拆档。
压缩并不是归档
压缩
- 学习压缩算法可知压缩是减小一块数据的空间占用,数据是一个整体不是离散的,通常是单个文件,目录的数据是离散的。
- 常见的压缩算法和命令有:gzip,bzip2等,这些命令只能操作单个文件,即使支持目录,也是对目录下的文件进行遍历,分别做压缩处理,生成多个压缩文件。
归档
- 将单个或多个目录下的所有文件压缩成一个文件,这是正常使用需求,仅仅是压缩算法不足以实现这个需求,因此存在归档操作。
- 归档操作的作用就是:将离散的数据,例如:目录下的文件,整合规划成一整块数据,以供压缩算法处理。
- 常见的归档命令:tar,zip等,tar和zip有点特殊,并不仅仅只能归档,如下:
* tar 基础功能是归档,也可以调用其它接口实现数据压缩。
tar -c:创建归档文件 xxx.tar
tar -j:调用bzip2程序进行压缩或解压 用来压缩的选项
tar -z:调用gzip程序进行压缩或解压 用来压缩的选项
* zip 归档+压缩一体的。
理解误区
- 之前未做过解压缩编程,要么就是通过命令实现,得到需求:实现文件或目录的压缩上传和下载解压,由于没注意压缩和归档区别,研究了bzip2开源库的使用,发现不支持目录操作,不解,故记录。