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