5.打包与压缩

本章同步视频:https://edu.51cto.com/sd/e4874

5.1 Linux 系统常见的压缩指令

5.1.1常见后缀

n  *.Z         compress 程序压缩的档案;

n  *.zip       zip程序压缩的档案;

n  *.gzgzip程序压缩的档案;

n  *.bz2       bzip2 程序压缩的档案;

n  *.xzxz程序压缩的档案;

n  *.tar       tar程序打包的数据,并没有压缩过;

n  *.tar.gz    tar 程序打包的档案,其中并且经过gzip的压缩

n  *.tar.bz2   tar 程序打包的档案,其中并且经过 bzip2 的压缩

n  *.tar.xz    tar 程序打包的档案,其中并且经过xz的压缩

5.1.2  gzip, gunzip, zcat - compress or expand files

1.语法

[dmtsai@study ~]$ gzip [-cdtv#] 檔名

[dmtsai@study ~]$ zcat檔名.gz

选项与参数:

-c  :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;

-d  :解压缩的参数;

-t  :可以用来检验一个压缩文件的一致性~看看档案有无错误;

-v  :可以显示出原档案/压缩文件案的压缩比等信息;

-#  :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!预设是 -6

2.用法

(1)测试一般压缩

[root@localhost dir]# ll

total 1020

-rw-r--r--. 1 root root 1042088 Mar 30 20:36 etc.conf

[root@localhost dir]# gzip etc.conf      #不带任何选项的压缩

[root@localhost dir]# ll

total 244

-rw-r--r--. 1 root root 247318 Mar 30 20:36 etc.conf.gz

(2)解压缩

[root@localhost dir]# gzip -d etc.conf.gz     #解压缩

[root@localhost dir]# ll

total 1020

-rw-r--r--. 1 root root 1042088 Mar 30 20:36 etc.conf

(3)显示压缩比

[root@localhost dir]# gzip -v etc.conf    #显示压缩比的压缩

etc.conf:  76.3% -- replaced with etc.conf.gz

(4)保留源文件

[root@localhost dir]# gzip -c etc.conf >etc.conf.c   #保留源文件的压缩

[root@localhost dir]# ll

total 1264

-rw-r--r--. 1 root root 1042088 Mar 30 20:36 etc.conf

-rw-r--r--. 1 root root  247318 Mar 30 20:47 etc.conf.c

(5)设定不同的压缩比(压缩比为1-9)

[root@localhost dir]# gzip -9 -c etc.conf>etc.conf.9    #9级压缩

[root@localhost dir]# gzip -1 -c etc.conf>etc.conf.1    #1级压缩

[root@localhost dir]# ll    

total 1784

-rw-r--r--. 1 root root 1042088 Mar 30 20:36 etc.conf

-rw-r--r--. 1 root root  282311 Mar 30 20:48 etc.conf.1

-rw-r--r--. 1 root root  246914 Mar 30 20:48 etc.conf.9

-rw-r--r--. 1 root root  247318 Mar 30 20:47 etc.conf.c

(6)递归压缩

[root@localhost dir]# mkdir dir     #创建一个子目录

[root@localhost dir]# ll

total 1020

drwxr-xr-x. 2 root root       6 Mar 30 20:50 dir

-rw-r--r--. 1 root root 1042088 Mar 30 20:36 etc.conf

[root@localhost dir]# cp etc.conf dir/    #将etc.conf复制到子目录

[root@localhost dir]# cd ..     #退回到父目录

[root@localhost tmp]# gzip -c dir/* > dir.1     #压缩外层dir目录

gzip: dir/dir is a directory -- ignored     #显示忽略子目录内容

[root@localhost tmp]# gzip -c -r dir/>dir.2    #递归压缩外层dir目录

[root@localhost tmp]# ll

drwxrwxrwx. 3 root root      31 Mar 30 20:50 dir

-rw-r--r--. 1 root root  247318 Mar 30 20:52 dir.1

-rw-r--r--. 1 root root  494636 Mar 30 20:53 dir.2

#注意对比dir.1和dir.2的大小。

(7)查看压缩内容

[root@localhost dir]# ll

-rw-r--r--. 1 root root 2003 Mar 30 21:05 passwd

[root@localhost dir]# gzip passwd

[root@localhost dir]# ll

-rw-r--r--. 1 root root 800 Mar 30 21:05 passwd.gz

[root@localhost dir]# zcat passwd.gz

[root@localhost dir]# zmore passwd.gz

[root@localhost dir]# zless passwd.gz

[root@localhost dir]# zgrep -n "calf" passwd.gz

39:calf:x:1000:1000:calf:/home/calf:/bin/bash

5.1.3 bzip2, bzcat/bzmore/bzless/bzgrep

1.语法

[dmtsai@study ~]$ bzip2 [-cdkzv#] 檔名

[dmtsai@study ~]$ bzcat檔名.bz2

选项与参数:

-c  :将压缩的过程产生的数据输出到屏幕上!

-d  :解压缩的参数

-k  :保留源文件,而不会删除原始的档案喔!

-z  :压缩的参数 (默认值,可以不加)

-v  :可以显示出原档案/压缩文件案的压缩比等信息;

-#  :与gzip同样的,都是在计算压缩比的参数, -9 最佳, -1 最快!

2.用法

(1)基本用法

[root@localhost dir]# ll

total 4

-rw-r--r--. 1 root root 2003 Mar 30 21:05 passwd

[root@localhost dir]# bzip2 passwd

[root@localhost dir]# ll

total 4

-rw-r--r--. 1 root root 837 Mar 30 21:05 passwd.bz2

(2)解压缩

[root@localhost dir]# bzip2 -d passwd.bz2

[root@localhost dir]# ll

total 4

-rw-r--r--. 1 root root 2003 Mar 30 21:05 passwd

(3)显示压缩参数

[root@localhost dir]# bzip2 -v passwd

  passwd:   2.393:1,  3.343 bits/byte, 58.21% saved, 2003 in, 837 out.

(4)保留源文件

[root@localhost dir]# bzip2 -k passwd

[root@localhost dir]# ll

total 8

-rw-r--r--. 1 root root 2003 Mar 30 21:05 passwd

-rw-r--r--. 1 root root  837 Mar 30 21:05 passwd.bz2

(5)指定压缩比

[root@localhost dir]# bzip2 -9 passwd

[root@localhost dir]# bzip2 -1 passwd

#注意:连续执行这两条命令会报错,bzip2: Output file passwd.bz2 already exists. 提示文件已经存在,需要解压后再做第二步。或者执行下面两条命令:

[root@localhost dir]# bzip2 -9 -c passwd>passwd.9.bz2

[root@localhost dir]# bzip2 -1 -c passwd>passwd.1.bz2

(6)查看压缩内容

[root@localhost dir]# bzcat passwd.bz2

[root@localhost dir]# bzmore passwd.bz2

[root@localhost dir]# bzless passwd.bz2

[root@localhost dir]# bzgrep -n "calf" passwd.bz2

39:calf:x:1000:1000:calf:/home/calf:/bin/bash

5.1.4 xz,    xzcat,   - Compress or decompress   .xz  files

1.语法

[dmtsai@study ~]$ xz [-dtlkc#] 檔名

[dmtsai@study ~]$ xcat檔名.xz

选项与参数:

-d  :就是解压缩啊!

-t  :测试压缩文件的完整性,看有没有错误

-l  :列出压缩文件的相关信息

-k  :保留原本的档案不删除~

-c  :同样的,就是将数据由屏幕上输出的意思!

-#  :同样的,也有较佳的压缩比的意思!

2.用法

(1)一般用法

[root@localhost dir]# xz passwd

[root@localhost dir]# ll

total 4

-rw-r--r--. 1 root root 864 Mar 30 21:05 passwd.xz

#压缩后源文件会消失

(2)解压缩

[root@localhost dir]# xz -d passwd.xz

[root@localhost dir]# ll

total 4

-rw-r--r--. 1 root root 2003 Mar 30 21:05 passwd

(3)保留源文件

[root@localhost dir]# xz -k passwd

[root@localhost dir]# ll

total 8

-rw-r--r--. 1 root root 2003 Mar 30 21:05 passwd

-rw-r--r--. 1 root root  864 Mar 30 21:05 passwd.xz

(4)显示压缩参数

[root@localhost dir]# xz -l passwd.xz

Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename

    1       1        864 B      2,003 B  0.431  CRC64   passwd.xz

(5)指定压缩比

[root@localhost dir]# xz -9 passwd

[root@localhost dir]# xz -1 passwd

#或者执行下面两条命令

[root@localhost dir]# xz -9 -c passwd>passwd.9.xz

[root@localhost dir]# xz -1 -c passwd>passwd.1.xz

(6)查看压缩内容

[root@localhost dir]# xzcat passwd.xz

[root@localhost dir]# xzmore passwd.xz

[root@localhost dir]# xzless passwd.xz

[root@localhost dir]# xzgrep -n "calf" passwd.xz

39:calf:x:1000:1000:calf:/home/calf:/bin/bash

本章同步视频:https://edu.51cto.com/sd/e4874