压缩与归档,这是两种不同的概念,其用途也不一样,压缩是通过压缩算法对文件进行压缩,其体积会根据算法减少;归档则是将文件打包,相当与给文件加了个“盒子”,体积还有可能增大。 压缩工具只能压缩单个文件,不能压缩多个文件或文件夹,所以需要先归档文件再压缩。 常见的压缩工具有: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