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)挂载并查看镜像文件;
 