跳到主要内容

20、Linux 实战:压缩和打包

压缩/打包

压缩:通过压缩算法将一个大的文件变成一个小的文件

1)压缩比:压缩后文件的大小和压缩前文件占用的大小的比值

2)打包:将很多文档打包成为一个文件

3)为了利于理解压缩/打包文档都有对应的后缀名

后缀名 含义
.Z compress程序压缩的文档
.zip zip程序压缩的文档
.gz gzip程序压缩的文档
.bz2 bzip2程序压缩的文档
.xz xz程序压缩的文档
.tar tar程序打包的文档,并没有压缩过
.tar.gz tar程序打包的文档,并且经过gzip的压缩
.tar.bz2 tar程序打包的文档,并且经过bzip2的压缩
.tar.xz tar程序打包的文档,并且经过xz的压缩

压缩

gzip命令:使用gzip程序压缩文档

指令格式1:gzip 选项 文档路径 //压缩指定文档

选项 含义
-f 强制压缩文档
-r 递归压缩文档
-t 检验压缩文档
-v 压缩文件时显示压缩详细信息
-c 将压缩的文件数据同时输出到屏幕上
-N 指定压缩等级 N为1~9之间的数字,默认为-6 -1最快但压缩比最差,-9最慢但压缩比最好

1)默认文件被压缩成“原文件名.gz”的压缩文件后,源文件会被删除

2)zcat/zmore/zless使用对应于cat/more/less命令读取纯文本文件的方式来读取被压缩后的压缩文件(egrep对应于grep命令在文件中查找数据)

//gzip压缩的文档可在Windows系统中被解压缩

指令格式2:gzip -d 文档路径 //解压指定文件

1)文件别解压后,压缩文件会被删除

bzip2命令:使用bizp2程序压缩文档

指令格式1:bzip2 选项 文档路径

选项 含义
-z 强制压缩文档
-t 检验压缩文档
-k 压缩后保留源文件
-v 压缩文件时显示压缩详细信息
-c 将压缩的文件数据同时输出到屏幕上
-N 指定压缩等级 N为1~9之间的数字,默认为-6 -1最快但压缩比最差,-9最慢但压缩比最后

1)bzcat/bzmore/bzless使用对应于cat/more/less命令读取纯文本文件的方式来读取被压缩后的压缩文件

指令格式2:bzip2 -d 文档路径 //解压指定文件

//文件别解压后,压缩文件会被删除

xz命令:使用xz程序压缩文档

指令格式:xz 选项 文档路径

选项 含义
-t 检验压缩文档
-k 压缩后保留源文件
-v 压缩文件时显示压缩详细信息
-c 将压缩的文件数据同时输出到屏幕上
-l 显示压缩文件的详细信息
-N 指定压缩等级 N为1~9之间的数字,默认为-6 -1最快但压缩比最差,-9最慢但压缩比最后

指令格式2:xz -d 文档路径 //解压指定文件

//文件别解压后,压缩文件会被删除

压缩时间:xz>bzip2>gzip

压缩效率:xz>bzip2>gzip

打包

tarfile:仅使用tar对文档打包

tarball:使用tar对文档打包同时也进行压缩

tar命令:将1个或多个文档打包成一个文件

指令格式1:tar 选项 -f 待建立打包文件名 文件名 //打包压缩文件

选项 含义
-f 指定后续待处理的压缩/解压文件路径 (由于该选项比较特殊,所以需将-f单独写出)
-c 建立打包文件
-z 通过gzip程序压缩/解压
-j 通过bzip程序压缩/解压
-J 通过xz程序压缩/解压
-v 在压缩过程中显示执行过程
-p 保留打包文档原本权限与属性 且在保留文档路径时不包含根目录“/”
-P 使用绝对路径的方式记录打包文档的原路径
--exclude=File 压缩过程中不包含File
--newer=“2021/04/09” 仅打包2021/04/09后的新文件

1)若使用绝对路径记录打包文档的原路径,在解压时会直接放置到对应路径(若存在相同文档则覆盖)

2)“新文件”通过mtime和ctime判断

指令格式2:tar 选项 -f 打包文件路径 //解压/查看压缩文件

选项 含义
-t 列出打包文件中所含文档的文档名
-v 同时列出文档的权限/属性等参数
-x 解包/解压缩
-C 将文件解压后放置到指定目录

//若不指定解压目录,则默认在当前目录下解压

如:打包/etc目录,并进行对于操作
1)使用tar打包/etc目录,并使用bzip2压缩
 
2)查看/root/etc.tar.bz2打包文件
 
3)将/root/etc.tar.bz2解压到/tmp/etc文件中
 
4)仅打开/root/etc.tar.bz2打包文件中的shadow文件
 
5)打包/etc和/root两个目录,但不包含/root/etc开头的文件
 
6)打包/root目录下,在2021/03/20后的新文件
 

解压打包文件中的指定文件:tar -jxv -f 打包文件路径 指定文件路径

1)其中j也可能是z或J(根据压缩程序决定)
 

镜像

mkisofs命令(make iso file system):将指定数据备份成镜像文件

指令格式:mkisofs 选项 待备份数据

选项 含义
-o 指定生成的镜像文件路径
-v 显示创建镜像文件过程
-m 指定不会备份的文档
-r 通过Rock Ridge记录更多文件信息
-graft-point 实现镜像文件中目录的功能

1)生成的镜像文件都以“img”或“iso”作为后缀名

2)光盘格式一般为iso9660,仅支持旧版的DOS文件名(文件名8,扩展名3)

3)-r选项可使文件名记录更多信息(如:UID/GID和权限等)

4)-graft-point选项:等号左边是在镜像文件内的目录,右侧是实际数据

//默认情况下,所有被备份数据都默认放置到镜像文件中的根目录,就会导致两个不同目录下的同名文档不能备份到同一镜像文件下,而-graft-point选项就可实现通过目录实现分层保存解决同名问题

如:将/root和/home文件备份成root_home1.iso镜像文件
1)备份成镜像文件;
 
2)挂载并查看镜像文件
 

如:将/root和/home文件备份成root_home2.iso文件,且镜像文件目录下分为root和home两个目录,不包含/home/mwl目录
1)备份镜像文件;
 
2)挂载并查看镜像文件;