压缩与归档,这是两种不同的概念,其用途也不一样,压缩是通过压缩算法对文件进行压缩,其体积会根据算法减少;归档则是将文件打包,相当与给文件加了个“盒子”,体积还有可能增大。  压缩工具只能压缩单个文件,不能压缩多个文件或文件夹,所以需要先归档文件再压缩。   常见的压缩工具有:gzip、bzip2、xz、zip、compress(比较古老了)   常见的归档工具有:zip(既可压缩、也可归档)、tar、cpio  

|压缩工具 |对应解压工具 | 展开工具 | 压缩后缀 | -------- | -------- | -------- | | compress | uncompress | zcat |.Z |gzip |gunzip、gzip -d |zcat |.gz |bzip2 |bunzip2、bzip2 -d |bzcat |.bz2 |xz| unxz、xz -d |xzcat |.xz| |zip| unzip、zip -d |zip -l |.zip|

一、compress   compress 是早期Linux使用的压缩工具,到现在基本不用了。

		压缩文件:
		[root@localhost ~]# compress  messages  
		[root@localhost ~]# ll messages 
		-rw-------.  1 root root 4354 Jan  7 21:49 messages.Z
		解压文件:
		[root@localhost ~]# uncompress  messages.Z 
		```
**二、gzip**
  gzip 这是以前较为流行的压缩工具,采用LZ77算法,至今也还能见其被使用
gzip [options]	 filename 
	-d  解压,相当于gunzip 
	-t	test,检查压缩文件是否完整,并不解压
	-r	对文件夹中的所文件进行压缩/解压,并不能真正的压缩/解压文件夹
	-c	--stdout  --to-stdout,将压缩结果作为标准化输出,不修改原文件
	-#	指定压缩比,1-9,级别越高压缩率越高,越消耗资源
	对messages文件进行压缩:
	[root@localhost ~]# ll -h  messages
	-rw-r--r--.  1 root root  10K Jan  7 22:05 messages

	[root@localhost ~]# gzip  -9  messages 

	[root@localhost ~]# ll -h messages.gz 
	-rw-r--r--. 1 root root 54 Jan  7 22:05 messages.gz

	对messages文件进行解压:
	[root@localhost ~]# gunzip messages.gz 
	或	[root@localhost ~]# gzip -d messages.gz
	[root@localhost ~]# ll -h messages 
	-rw-r--r--. 1 root root 10K Jan  7 22:05 messages

	不解压,仅查看文件:
	[root@localhost ~]# zcat   messages.gz  |  less

	不管是压缩还是解压都会删除原文件,若要保留则:
	保留源文件压缩:
	[root@localhost ~]# gzip -c  messages  >>messages.gz
	[root@localhost ~]# ll mess*
	-rw-------. 1 root root 46245 Jan  7 22:23 messages
	-rw-r--r--. 1 root root  3385 Jan  7 22:35 messages.gz
	保留原文件解压:
	[root@localhost ~]# gzip -d  -c  messages.gz  >messages
	[root@localhost ~]# ll messages*
	-rw-r--r--. 1 root root 46245 Jan  7 22:32 messages
	-rw-------. 1 root root  3294 Jan  7 22:23 messages.gz
**三、bzip2**
  bzip2,对gzip进行了升级改进,压缩算法为 LZ77/LZ78,其用法与gzip非常类似。
	bzip2  [options]  filename1  filename2 ... 
	-d	解压文件,相当于bunzip2
	-k	保留源文件
	-t	test,检查压缩文件是否完整,并不解压
	-q	静默操作
	-r	对文件夹中的所文件进行压缩/解压,并不能真正的压缩/解压文件夹
	-c	--stdout  --to-stdout,将压缩结果作为标准化输出,不修改原文件
	-#	与gzip类似,指定压缩级别,1-9,越高越占用资源

	压缩文件:
	[root@localhost ~]# bzip2 -k -9  messages  
	[root@localhost ~]# ll mes* -h
	-rw-------. 1 root root  46K Jan  7 22:23 messages
	-rw-------. 1 root root 3.0K Jan  7 22:23 messages.bz2
	可以看到压缩还是挺强的
	查看压缩文件:
	[root@localhost ~]# bzcat messages.bz2   | less
	解压文件:
	[root@localhost ~]# bzip2 -d  messages.bz2  -c >123
	解压文件,并重输出到指定文件123 
**四、xz**
  xz 是推荐使用的一种压缩格式,在网上经常被使用为源代码打包的首选格式。
	xz	[options]	 filename  ...
	-d	解压文件,相当于bunzip2
	-k	保留源文件
	-t	test,检查压缩文件是否完整,并不解压
	-q	静默操作
	-r	对文件夹中的所文件进行压缩/解压,并不能真正的压缩/解压文件夹
	-c	--stdout  --to-stdout,将压缩结果作为标准化输出,不修改原文件
	-#	与gzip类似,指定压缩级别,1-9,越高越占用资源
	-F	指定压缩格式,可以为LZMA算法,压缩后的文件后缀为.lzma,不常用
	压缩文件:
	[root@localhost ~]# xz -k -9 messages 
	[root@localhost ~]# ll messages.xz   -h
	-rw-------. 1 root root 2.6K Jan  7 22:23 messages.xz
	查看文件:
	[root@localhost ~]# xzcat  messages.xz  | less
	解压文件:
	[root@localhost ~]# xz -d  messages.xz  
**五、zip**
  zip也是一种比较古老的压缩工具了,其支持压缩、打包,并且Windows/Linux都默认支持,不需要解压安装工具。
	压缩文件:
	[root@localhost ~]# zip  messages.zip messages
		adding: messages (deflated 93%
	注意,先指定压缩后的文件名,然后才是源文件
	解压文件:
	[root@localhost ~]# unzip messages.zip 
	查看文件:
	[root@localhost ~]# zcat  messages.zip
	打包并压缩文件:
	[root@localhost ~]# zip  log.zip log/*
		adding: log/anaconda/ (stored 0%)
		adding: log/anaconda.zip (stored 0%)
		adding: log/audit/ (stored 0%)
		adding: log/boot.log (deflated 80%)
		adding: log/btmp (stored 0%)
		adding: log/btmp-20180103 (stored 0%)

	[root@localhost ~]# ll -h  log.zip  
	-rw-r--r--. 1 root root 391K Jan  7 23:16 log.zip
**六、tar**
  tar是个专门用于打包的工具,使用gzip、bzip2、xz等工具的递归压缩,可以发现实际上是对文件夹内的所有文件进行单独的压缩,并不是将多个文件压缩成个压缩包。
	[root@localhost ~]# gzip -r  log
	[root@localhost ~]# ll log
	-rw-r--r--. 1 root root 184715 Jan  7 19:37 anaconda.zip.gz
	-rw-r--r--. 1 root root   2759 Jan  7 19:37 boot.log.gz
	-rw-------. 1 root root    619 Jan  7 19:37 cron-20171220.gz
	-rw-------. 1 root root    659 Jan  7 19:37 cron-20180103.gz
	-rw-------. 1 root root   1621 Jan  7 19:37 cron-20180107.gz
	...
**  tar的作用就是将多个文件打包(归档)并压缩**
	tar  [options] file  ...
	-c	创建归档
	-x	解开归档
	-t	不展开归档,仅查看
	-f	指定归档的文件名称
	-j	--bzip2,调用bzip2工具进行压缩/解压
	-J	--xz,调用xz工具进行压缩/解压
	-z	--gzip 调用gzip工具进行压缩/解压
	-v	显示过程
	-p	保留权限
	-C	更改解压/压缩的目录,缺省为本地
	常见用法:
	tar  -cf   归档.tar 	源文件....		//创建归档
	tar  -xf   归档.tar	解压文件		//解压归档
	tar  -tf    归档.tar			//查看归档
	创建归档并使用xz压缩:
	[root@localhost ~]# tar   -Jcvf mess.tar.xz  messages  
	解压归档并使用xz解压:
	[root@localhost ~]# tar -Jxvf mess.tar.xz  -C  /tmp/
	不解压仅展开归档:
	[root@localhost ~]# tar -tvf mess.tar.xz 
	-rw------- root/root     46245 2018-01-07 22:23 messages