第二十四章 Linux系统打包压缩详解

一、压缩概述

1.压缩包含义

就是一个特殊的文件,将多个文件或者目录压缩成一个特殊的文件  

2.为什么要用压缩包

1.减少占用的空间  
	
2.加快传输的速度

3.windows和linux常见压缩类型

windows:

	.zip      .rar
	
linux:

	.zip	.gz    .tar.gz 
	
ps:如果要想Windows和linux中的压缩包互相使用,建议使用.zip种类的压缩包 

4.在Linux中压缩包的类型

.zip		#根据zip命令进行打包压缩的

.gz			#通过gzip命令进行压缩  只压缩文件,也会删除源文件 

.bz2		#通过bzip进行压缩, 只压缩文件,也会删除源文件

.tar.gz		#使用tar命令归档打包,然后使用gzip命令进行压缩 

.tar.bz2		#使用tar命令归档打包,然后使用bzip命令进行压缩  

二、压缩与解压文件-unzip

1.安装

[root@jindada ~]# yum install  -y  zip  unzip

2.压缩文件命令-zip

2.1 含义

zip命令的功能是用于压缩文件,解压命令为unzip。通过zip命令可以将文件打包成.zip格式的压缩包,里面会附含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。

语法格式:zip 参数 文件

2.2 常见参数

-q 不显示指令执行过程
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-z 替压缩文件加上注释
-v 显示指令执行过程或显示版本信息
-d 更新压缩包内文件
-n<字尾字符串> 不压缩具有特定字尾字符串的文件

3.解压缩zip格式文件-unzip

3.1 含义

unzip命令用于解压缩zip格式文件,虽然Linux系统中更多的使用tar命令进行对压缩包的管理工作,但有时也会收到同Windows系统常用的.zip和.rar格式的压缩包文件,unzip格式便派上了用场。直接使用unzip命令解压缩文件后,压缩包内原有的文件会被提取并输出保存到当前工作目录下。

语法格式:unzip [参数] 压缩包

3.2 常用参数

-l 显示压缩文件内所包含的文件
-v 执行时显示详细的信息
-c 将解压缩的结果显示到屏幕上,并对字符做适当的转换
-n 解压缩时不要覆盖原有的文件
-j 不处理压缩文件中原有的目录路径

4.常见示例

[root@jindada ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

针对文件进行压缩打包

[root@jindada ~]# zip  services.zip   services 
  adding: services (deflated 80%)
[root@jindada ~]# ll
total 792
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services
-rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip

压缩目录时不加选项,只压缩目录本身

[root@jindada ~]# zip  etc.zip  /etc
  adding: etc/ (stored 0%)
[root@jindada ~]# ll
total 796
-rw-r--r-- 1 root root    158 Jul 29 09:07 etc.zip
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services
-rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip

显示压缩文件内所包含的文件

[root@jindada ~]# unzip  -l  etc.zip 
Archive:  etc.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  07-29-2020 08:56   etc/
---------                     -------
        0                     1 file

解压指定目录

[root@jindada ~]# unzip  etc.zip 
Archive:  etc.zip
   creating: etc/
[root@jindada ~]# ll
total 796
drwxr-xr-x 2 root root      6 Jul 29 08:56 etc
-rw-r--r-- 1 root root    158 Jul 29 09:07 etc.zip
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services
-rw-r--r-- 1 root root 136227 Jul 29 09:06 services.zip
[root@jindada ~]# ll etc
total 0

压缩目录和目录下的文件

[root@jindada ~]# zip  -r  etc.zip  /etc


[root@jindada ~]# ll -h
total 13M
-rw-r--r-- 1 root root  12M Jul 29 09:10 etc.zip
-rw-r--r-- 1 root root 655K Jul 29 08:45 services
-rw-r--r-- 1 root root 134K Jul 29 09:06 services.zip
[root@jindada ~]# du -sh  /etc
31M	/etc

查看压缩包里面的文件

[root@jindada ~]# unzip -l  etc.zip

静默输出

[root@jindada ~]# zip  -rq    etc1.zip  /etc
[root@jindada ~]# ll
total 24976
-rw-r--r-- 1 root root 12380952 Jul 29 09:13 etc1.zip
-rw-r--r-- 1 root root 12380952 Jul 29 09:10 etc.zip
-rw-r--r-- 1 root root   670293 Jul 29 08:45 services
-rw-r--r-- 1 root root   136227 Jul 29 09:06 services.zip

解压文件

[root@jindada ~]# unzip   etc.zip

静默解压文件,将文件解压到指定的目录下面

[root@jindada ~]# unzip  -q  etc.zip   -d  /opt/
[root@jindada ~]# ll /opt/
total 12
drwxr-xr-x 85 root root 8192 Jul 29 08:56 etc
-rw-r--r--  1 root root    0 Jul 28 12:09 file9

三、压缩和解压文件-gzip

1.含义

zip命令来自于英文单词gunzip的缩写,其功能是用于压缩和解压文件。gzip是一款使用广泛的压缩工具,文件经过压缩后一般会以.gz后缀结尾,与tar命令合用后即为.tar.gz后缀。

据统计,gzip命令对文本文件的压缩比率通常能达到60%~70%,压缩后可以很好的提升存储空间的使用率,还能够在网络传输文件时减少等待时间。

语法格式:gzip [参数] 文件

2.常用参数

-a 使用ASCII文字模式
-d 解开压缩文件
-f 强行压缩文件
-l 列出压缩文件的相关信息
-c 把压缩后的文件输出到标准输出设备,不去更动原始文件
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-q 不显示警告信息

3.常见示例

将指定的文件进行压缩,压缩包默认会以“原文件名.gz”保存到当前工作目录下,原文件会被自动删除

[root@jindada ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

[root@jindada ~]# gzip   services 
[root@jindada ~]# ll
total 136
-rw-r--r-- 1 root root 136088 Jul 29 08:45 services.gz

# 使用zcat命令查看gzip压缩的文件内容
[root@jindada ~]# zcat  services.gz

解压指定的压缩包文件,并显示解压过程。解压后的文件会保存在当前工作目录下,压缩包会被自动删除

[root@jindada ~]# gzip -dv services.gz 
services.gz:	-18.2% -- replaced with services

显示指定文件的压缩信息

[root@jindada ~]# gzip -l services
         compressed        uncompressed  ratio uncompressed_name
                 40                  11 -18.2% services
[root@jindada ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

将目录下的所有都进行压缩处理

[root@jindada ~]# gzip  -r   /etc

# 解压目录下的所有压缩包
[root@jindada ~]# gzip  -rd  /etc

四、压缩和解压文件-bzip2

1.含义

Linux系统中bzip2命令的英文是“bunzip2”,即.bz2文件格式的压缩程序; bzip2命令系统默认是没有安装的,需要安装bzip2库才可以使用此命令。

bzip2命令采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。

语法格式:bzip2 [参数] 文件系统

2.安装

[root@jindada ~]# yum  install  -y  bzip2

3.常用参数

-c 将压缩与解压缩的结果送到标准输出
-d 执行解压缩
-f bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数
-k bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数
-s 降低程序执行时内存的使用量
-t 测试.bz2压缩文件的完整性
-v 压缩或解压缩文件时,显示详细的信息
-z 强制执行压缩

4.常用示例

压缩文件

[root@jindada ~]# bzip2  services 
[root@jindada ~]# ll
total 124
-rw-r--r-- 1 root root 123932 Jul 29 08:45 services.bz2

解压文件

# 解压 
[root@jindada ~]# bzip2  -d  services.bz2 
[root@jindada ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 08:45 services

检查文件完整性

[root@jindada ~]# bzip2 -t services.bz2

查看bzip2压缩的文件

[root@jindada ~]# bzcat   services.bz2 

五、压缩和解压文件-tar

1.含义

tar命令的功能是用于压缩和解压缩文件,能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。对于RHEL7、CentOS7版本以后的系统,解压时可以不加压缩格式参数(如z或j),系统能自动进行分析并解压。

把要传输的文件先进行压缩再进行传输,能够很好的提高工作效率,方便分享。

语法格式:tar 参数 文件或目录

2.常用参数:

-A 新增文件到以存在的备份文件
-B 设置区块大小
-c 建立新的备份文件
-C <目录> 仅压缩指定目录里的内容或解压缩到指定目录
-d 记录文件的差别
-x 从归档文件中提取文件
-xf 解压指定的压缩包
-t 列出备份文件的内容
-tvf 查看某个压缩包内文件信息(无需解压)
-z 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-Z 通过compress指令处理备份文件
-f 指定压缩包的名称
-czf 打包压缩 tar.gz格式的压缩包
-cjf 打包压缩 tar.bz2格式的压缩包
-cJf 打包压缩 tar.xz格式的压缩包
-v 显示指令执行过程
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-j 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-w 确认压缩文件的正确性
-p 保留原来的文件权限与属性
-P 使用文件名的绝对路径,不移除文件名称前的“/”号
-N <日期格式> 只将较指定日期更新的文件保存到备份文件里
-X 指定排除文件的列表文件
-- -exclude=<范本样式> 指定排除的文件
--exclude-from= 指定排除文件的列表
-- -remove-files 归档/压缩之后删除源文件

3.常见示例

使用gzip压缩格式对某个目录进行打包操作,压缩包规范后缀为.tar.gz

[root@jindada ~]# ll
total 656
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
[root@jindada ~]# tar  czf  services.tar.gz   services 
[root@jindada ~]# ll
total 792
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
-rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz

[root@jindada ~]# tar  czf  etc.tar.gz   /etc
tar: Removing leading `/' from member names		#删根的操作是正常的
[root@jindada ~]# ll
total 10952
-rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz

使用bzip2压缩格式对某个目录进行打包操作,压缩包规范后缀为.tar.bz2

[root@jindada ~]# tar  cjf  services.tar.bz2  services
[root@jindada ~]# ll
total 916
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
-rw-r--r-- 1 root root 124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz

使用xz压缩格式对某个目录进行打包操作,压缩包规范后缀为.tar.xz

[root@jindada ~]# tar  cJf  services.tar.xz  services
[root@jindada ~]# ll
total 1016
-rw-r--r-- 1 root root 670293 Jul 29 09:47 services
-rw-r--r-- 1 root root 124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root 136200 Jul 29 09:48 services.tar.gz
-rw-r--r-- 1 root root 100640 Jul 29 09:49 services.tar.xz

查看某个压缩包内文件信息(无需解压)

[root@jindada ~]# tar  tvf  services.tar.gz
-rw-r--r-- root/root        11 2022-11-03 16:15 services

解压某个压缩包到当前工作目录

[root@jindada ~]# tar  xf  services.tar.gz 
[root@jindada ~]# ll
total 10952
-rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r-- 1 root root   670293 Jul 29 09:47 services
-rw-r--r-- 1 root root   124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root   136200 Jul 29 09:48 services.tar.gz
-rw-r--r-- 1 root root   100640 Jul 29 09:49 services.tar.xz
[root@jindada ~]# tar xf  etc.tar.gz 
[root@jindada ~]# ll
total 10964
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r--  1 root root   670293 Jul 29 09:47 services
-rw-r--r--  1 root root   124166 Jul 29 09:48 services.tar.bz2
-rw-r--r--  1 root root   136200 Jul 29 09:48 services.tar.gz
-rw-r--r--  1 root root   100640 Jul 29 09:49 services.tar.xz

[root@jindada ~]# tar  cjf  etc.tar.bz2   /etc
tar: Removing leading `/' from member names
[root@jindada ~]# tar  cJf  etc.tar.xz   /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 26808
-rw-r--r-- 1 root root  8994047 Jul 29 10:01 etc.tar.bz2
-rw-r--r-- 1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r-- 1 root root  7238084 Jul 29 10:01 etc.tar.xz
-rw-r--r-- 1 root root   670293 Jul 29 09:47 services
-rw-r--r-- 1 root root   124166 Jul 29 09:48 services.tar.bz2
-rw-r--r-- 1 root root   136200 Jul 29 09:48 services.tar.gz
-rw-r--r-- 1 root root   100640 Jul 29 09:49 services.tar.xz
[root@jindada ~]# tar  xf  etc.tar.bz2 		#解压的时候,自动识别压缩包的格式 
[root@jindada ~]# ll
total 26820
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root  8994047 Jul 29 10:01 etc.tar.bz2
-rw-r--r--  1 root root 10171684 Jul 29 09:56 etc.tar.gz
-rw-r--r--  1 root root  7238084 Jul 29 10:01 etc.tar.xz

解压某个压缩包到指定目录

[root@jindada ~]# tar  xf  etc.tar.gz   -C  /opt/
[root@jindada ~]# ll /opt/
total 668
drwxr-xr-x 77 root root   8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 670293 Jul 29 09:47 services

使用gzip压缩格式对某个目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.gz

# 打包显示压缩过程
[root@jindada ~]# tar czvf  etc.tar.gz   /etc

# 解压显示压缩过程
[root@jindada ~]# tar  xvf  etc.tar.gz 

4.打包避免删根操作

4.1 错误现象

[root@jindada ~]# ll  /bin  -d
lrwxrwxrwx. 1 root root 7 Jul  6 02:13 /bin -> usr/bin
[root@jindada ~]# tar  czf  bin.tar.gz  /bin
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 9952
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz
[root@jindada ~]# tar xf  bin.tar.gz 
[root@jindada ~]# ll
total 9952
lrwxrwxrwx  1 root root        7 Jul  6 02:13 bin -> usr/bin
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz



[root@jindada ~]# tar  czhf  bin1.tar.gz  /bin
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
[root@jindada ~]# ll
total 36880
lrwxrwxrwx  1 root root        7 Jul  6 02:13 bin -> usr/bin
-rw-r--r--  1 root root 27573768 Jul 29 10:16 bin1.tar.gz
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz

4.2 使用相对路径打包

[root@jindada ~]# cd  /  
[root@jindada /]# tar  czf  /root/etc1.tar.gz    etc
[root@jindada /]# ll /root
total 46852
dr-xr-xr-x  2 root root    20480 Jul 29 08:58 bin
-rw-r--r--  1 root root 27573768 Jul 29 10:16 bin1.tar.gz
-rw-r--r--  1 root root      110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root     8192 Jul 29 08:56 etc
-rw-r--r--  1 root root 10171684 Jul 29 10:19 etc1.tar.gz
-rw-r--r--  1 root root 10171684 Jul 29 10:04 etc.tar.gz

# 真实生产环境打包场景 
[root@jindada ~]# cd  /  &&  tar  czf  /root/etc3.tar.gz   etc  &&  cd  -
/root
[root@jindada ~]# ll
total 581012
dr-xr-xr-x  2 root root     20480 Jul 29 08:58 bin
-rw-r--r--  1 root root  27573768 Jul 29 10:16 bin1.tar.gz
-rw-r--r--  1 root root       110 Jul 29 10:14 bin.tar.gz
drwxr-xr-x 77 root root      8192 Jul 29 08:56 etc
-rw-r--r--  1 root root  10171684 Jul 29 10:19 etc1.tar.gz
-rw-r--r--  1 root root 347209728 Jul 29 10:22 etc2.tar.gz
-rw-r--r--  1 root root  10171684 Jul 29 10:22 etc3.tar.gz

4.3 使用绝对路径打包

#使用绝对路径打包 

[root@jindada ~]# tar  czPf  etc4.tar.gz   /etc

#使用绝对路经解压 

[root@jindada ~]# tar xPf  etc4.tar.gz


[root@jindada ~]# cat  /etc/services  >> /opt/services 
[root@jindada ~]# ll /opt/
total 1744
drwxr-xr-x 77 root root    8192 Jul 29 08:56 etc
-rw-r--r--  1 root root     158 Jul 29 10:28 hosts
-rw-r--r--  1 root root 1340586 Jul 29 10:29 services
[root@jindada ~]# tar xPf  opt.tar.gz 
[root@jindada ~]# ll /opt/
total 672
drwxr-xr-x 77 root root   8192 Jul 29 08:56 etc
-rw-r--r--  1 root root    158 Jul 29 10:28 hosts
-rw-r--r--  1 root root 670293 Jul 29 09:47 services

5.排除不需要打包的文件

[root@jindada ~]# tar czf  etc1.tar.gz  /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 9936
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
[root@jindada ~]# ll /etc/services 
-rw-r--r-- 1 root root 670293 Jun  7  2013 /etc/services
[root@jindada ~]# tar  czf  etc2.tar.gz   --exclude=/etc/services   /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 19740
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
[root@jindada ~]# tar tf  etc2.tar.gz  |  grep  services
etc/firewalld/services/

6.排除多个文件

[root@jindada ~]# tar czf  etc3.tar.gz  --exclude=/etc/services  --exclude=/etc/passwd  /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 29544
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
[root@jindada ~]# tar tf  etc3.tar.gz  | grep  -E  'services|passwd'
etc/security/opasswd
etc/passwd-
etc/pam.d/passwd
etc/firewalld/services/


[root@jindada ~]# tar czf  etc4.tar.gz  --exclude=/etc/{services,passwd}   /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 39348
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz


[root@jindada ~]# cat paichu.list
/etc/fstab
/etc/group
/etc/hosts
/etc/passwd
/etc/services
[root@jindada ~]# tar czfX   etc5.tar.gz   paichu.list    /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll 
total 49152
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
-rw-r--r-- 1 root root 10033927 Jul 29 10:58 etc5.tar.gz
-rw-r--r-- 1 root root       59 Jul 29 10:57 paichu.list

[root@jindada ~]# tar tf etc5.tar.gz  | grep  -Ew  'fstab|group|hosts|passwd|services'
etc/security/group.conf
etc/group-
etc/passwd-
etc/hosts.allow
etc/hosts.deny
etc/pam.d/passwd
etc/iproute2/group
etc/firewalld/services/

[root@jindada ~]# tar  czf  etc6.tar.gz   --exclude-from=paichu.list   /etc
tar: Removing leading `/' from member names
[root@jindada ~]# ll
total 58952
-rw-r--r-- 1 root root 10171949 Jul 29 10:51 etc1.tar.gz
-rw-r--r-- 1 root root 10036635 Jul 29 10:52 etc2.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:54 etc3.tar.gz
-rw-r--r-- 1 root root 10035297 Jul 29 10:55 etc4.tar.gz
-rw-r--r-- 1 root root 10033927 Jul 29 10:58 etc5.tar.gz
-rw-r--r-- 1 root root 10033927 Jul 29 11:01 etc6.tar.gz
-rw-r--r-- 1 root root       59 Jul 29 10:57 paichu.list

六、查看压缩文件的内容-zcat

1.含义

zcat命令来自于英文词组“zip cat”的缩写,其功能是用于查看压缩文件的内容。zcat命令可以在不真正解压文件的情况下查看到文件内容,类似于gunnzip -c命令组合的作用。

语法格式:zcat [参数] 压缩包

2.常用参数

-S 当后缀不是标准压缩包后缀时使用此选项
-c 将文件内容写到标注输出
-d 执行解压缩操作
-l 显示压缩包中文件的列表
-L 显示软件许可信息
-q 禁用警告信息
-r 在目录上执行递归操作
-t 测试压缩文件的完整性
-V 显示指令的版本信息
-1 更快的压缩速度
-9 更高的压缩比

3.常用示例

在不解压文件的情况下,显示某个压缩包内文件的内容

[root@jindada ~]# zcat  services.tar.gz

在不解压文件的情况下,显示多个压缩包内文件的内容

[root@jindada ~]# zcat services.tar.gz  services.gz

查看指定文件的压缩信息(压缩后大小,未压缩大小,压缩率,文件名)

[root@jindada ~]# zcat  -l services.tar.gz 
         compressed        uncompressed  ratio uncompressed_name
                129               10240  98.9% services.tar

七、tar与find命令的综合运用

[root@jindada ~]# tar  czf  log1.tar.gz   `find  /var/log/  -type f  -name "*.log"`
tar: Removing leading `/' from member names
[root@jindada ~]# tar  czf  log2.tar.gz   $(find  /var/log/  -type f  -name "*.log")
tar: Removing leading `/' from member names
[root@jindada ~]# find  /var/log/  -type f  -name "*.log"  -exec  tar czf  log3.tar.gz  {}  \;
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names

[root@jindada ~]# find  /var/log/  -type f  -name "*.log"  | xargs  tar czf   log4.tar.gz  
tar: Removing leading `/' from member names

[root@jindada ~]# ll
total 916
-rw-r--r-- 1 root root 309155 Jul 29 11:09 log1.tar.gz
-rw-r--r-- 1 root root 309155 Jul 29 11:09 log2.tar.gz
-rw-r--r-- 1 root root    356 Jul 29 11:10 log3.tar.gz
-rw-r--r-- 1 root root 309155 Jul 29 11:10 log4.tar.gz

[root@jindada ~]# tar tf  log1.tar.gz   
var/log/tuned/tuned.log
var/log/audit/audit.log
var/log/anaconda/anaconda.log
var/log/anaconda/X.log
var/log/anaconda/program.log
var/log/anaconda/packaging.log
var/log/anaconda/storage.log
var/log/anaconda/ifcfg.log
var/log/anaconda/ks-script-3PCKae.log
var/log/anaconda/journal.log
var/log/boot.log
var/log/vmware-vmsvc.log
var/log/vmware-network.8.log
var/log/vmware-network.5.log
var/log/vmware-network.2.log
var/log/vmware-network.7.log
var/log/vmware-network.4.log
var/log/vmware-network.1.log
var/log/test.log
var/log/yum.log
var/log/vmware-network.9.log
var/log/nginx/error.log
var/log/nginx/access.log
var/log/vmware-network.6.log
var/log/vmware-network.3.log
var/log/vmware-network.log

[root@jindada ~]# tar tf  log3.tar.gz   
var/log/vmware-network.log

结论:
当使用-exec时,把find查找的文件是进行一个个赋值给{}的  

xargs 把find命令查找出来的文件统一的赋值给了后面 
posted @ 2020-07-28 15:26  年少纵马且长歌  阅读(508)  评论(0)    收藏  举报