Day14-压缩命令的学习(gzip、zip、tar)

Hyman's Road of Learning Linux.

1.什么是文件压缩?

  • 将多个文件或目录合并成为一个特殊的文件。

2.为什么要对文件进行压缩?

  • 减小文件的体积
  • 加快资源的传输
  • 节省网络的带宽

3.Windows的压缩包与Linux的压缩包能否互通?

  • windows: rar zip 其实支持很多类型的压缩
  • linux: zip tar.gz ....
  • windows与linux互通 建议使用: zip

4.Linux下压缩包有哪些常见的类型

格式 压缩工具
.zip zip压缩工具
.gz gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.bz2 bzip2压缩工具,智能压缩文件,会删除源文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩
.tar.bz2 先试用tar命令归档打包,然后使用bizp压缩

5.linux gzip 工具使用

*** gzip打包与压缩 ,仅对文件有效.***
gzip filename #打包
gzip -d filename.gz #解包
zcat filename.gz #查看包内文件的内容

  • 使用前先查看是否安装了gzip,没有用 yum install gzip -y 进行安装。
root@haoyu1[14:59:55]~# yum install gzip -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package gzip-1.5-10.el7.x86_64 already installed and latest version
Nothing to do
  • 对文件进行压缩 gzip filename
root@haoyu1[15:03:48]~# echo "hyman linux" > hyman.txt
root@haoyu1[15:03:51]~# gzip hyman.txt 
root@haoyu1[15:04:10]~# ll
total 4
-rw-r--r--. 1 root root 42 Aug 13 15:03 hyman.txt.gz
  • 查看gz压缩后的文件 zcat filename
root@haoyu1[15:04:12]~# zcat hyman.txt.gz 
hyman linux
  • 解压gzip的压缩包 gzip -d filename
root@haoyu1[15:05:26]~# gzip -d hyman.txt.gz 
root@haoyu1[15:07:00]~# ll
total 4
-rw-r--r--. 1 root root 12 Aug 13 15:03 hyman.txt
  • 使用场景:当需要让某个文件快速关闭和快速启用.
#/etc/yum.repos.d/目录下的repo文件,当我们不用的时候可以一条命令将它们关闭.
root@haoyu1[15:07:02]~# cd /etc/yum.repos.d/
root@haoyu1[15:15:37]/etc/yum.repos.d# ll
total 36
-rw-r--r--. 1 root root 2523 Jun 16  2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23  2018 CentOS-CR.repo
-rw-r--r--. 1 root root  664 Jul 30 09:41 epel.repo
root@haoyu1[15:15:39]/etc/yum.repos.d# gzip *
root@haoyu1[15:16:25]/etc/yum.repos.d# ll
total 32
-rw-r--r--. 1 root root 601 Jun 16  2018 CentOS-Base.repo.gz
-rw-r--r--. 1 root root 735 Nov 23  2018 CentOS-CR.repo.gz
-rw-r--r--. 1 root root 254 Jul 30 09:41 epel.repo.gz
#当关闭的情况下也可以使用zcat命令查看文件的内容
root@haoyu1[15:17:52]/etc/yum.repos.d# zcat CentOS-Base.repo.gz 
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#当我们需要开启的时候也可以使用gzip -d一条命令开启这些文件
root@haoyu1[15:16:27]/etc/yum.repos.d# gzip -d *
root@haoyu1[15:16:37]/etc/yum.repos.d# ll
total 36
-rw-r--r--. 1 root root 2523 Jun 16  2018 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Nov 23  2018 CentOS-CR.repo
-rw-r--r--. 1 root root  664 Jul 30 09:41 epel.repo

6.linux zip 工具使用

  • 默认情况下没有zip和unzip工具,需要进行安装 yum install zip unzip -y
root@haoyu1[16:10:09]~# yum install zip unzip -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Package zip-3.0-11.el7.x86_64 already installed and latest version
Package unzip-6.0-19.el7.x86_64 already installed and latest version
Nothing to do
  • 压缩文件为zip包 zip -r filename
root@haoyu1[16:11:20]~# mkdir hhaoyu
root@haoyu1[16:11:54]~# zip -r hhaoyu.zip hhaoyu/
  adding: hhaoyu/ (stored 0%)
root@haoyu1[16:12:14]~# ll
total 8
drwxr-xr-x. 2 root root   6 Aug 13 16:11 hhaoyu
-rw-r--r--. 1 root root 164 Aug 13 16:12 hhaoyu.zip
-rw-r--r--. 1 root root  12 Aug 13 15:03 hyman.txt
  • 查看zip压缩包是否是完整的 zip -T filename.zip
root@haoyu1[16:12:17]~# zip -T hhaoyu.zip 
test of hhaoyu.zip OK
  • 不解压压缩查看压缩包中的内容 unzip -l filename.zip
root@haoyu1[16:15:14]~# unzip -l hhaoyu.zip 
Archive:  hhaoyu.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  08-13-2019 16:15   hhaoyu/
---------                     -------
        0                     1 file
  • 检测文件是 否都ok unzip -t filename.zip
root@haoyu1[16:15:26]~# unzip -t hhaoyu.zip 
Archive:  hhaoyu.zip
    testing: hhaoyu/                  OK
No errors detected in compressed data of hhaoyu.zip.
  • 解压zip内容至/opt目录 unzip filename.zip -d /opt/
root@haoyu1[16:15:46]~# unzip hhaoyu.zip  -d /opt/
Archive:  hhaoyu.zip
   creating: /opt/hhaoyu/
  • 常用的zip命令
#打包 
zip -r /tmp/test.zip  file  dir/
#解包 
unzip tt.zip unzip tt.zip -d /opt

7.linux tar 工具使用

tar是linux下最常用的压缩与解压缩, 支持文件和目录的压缩归档

  • 语法:tar [-zjxcvfpP] filename
c 创建新的归档文件
x 对归档文件解包
t 列出归档文件里的文件列表
f 指定包文件名,多参数f写最后
z 使用gzip压缩归档后的文件(.tar.gz)
j 使用bzip2压缩归档后的文件(.tar.bz2)
J 使用xz压缩归档后的文件(.tar.xz)
c 指定解压目录位置
x 排除多个文件(写入需要排除的文件名称)
h 打包软链接
--exclude 在打包的时候写入需要排除文件或目录
  • 常用打包与压缩组合
cjf 打包tar.bz格式
cJf 打包tar.xz格式(很少使用)
zxf 解压tar.gz格式
jxf 解压tar.bz格式
czf 打包tar.gz格式(常用)
tf 查看压缩包内容
xf 自动选择解压模式(常用)
  • 将文件或目录进行打包压缩

    • 打包

      • 以gzip方式压缩
        root@haoyu1[16:34:17]~# tar czf hhaoyu.tar.gz hhaoyu/ hyman.txt
        
      • 以bz2方式压缩
        root@haoyu1[16:34:57]~# tar cjf hhaoyu.tar.bz2 hhaoyu/ hyman.txt
        
    • 查看包内容

      #.gz
      root@haoyu1[16:36:04]~# tar tf hhaoyu.tar.gz 
      hhaoyu/
      hhaoyu/123/
      hhaoyu/456/
      hyman.txt
      #.bz2
      root@haoyu1[16:36:04]~# tar tf hhaoyu.tar.bz2 
      #.xz
      root@haoyu1[16:36:04]~# tar tf hhaoyu.tar.xz 
      
    • 解压

      #.gz
      root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.gz
      #.bz2
      root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.bz2
      #.xz
      root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.xz
      #解压至指定目录
      root@haoyu1[16:37:14]~# tar xf hhaoyu.tar.gz -C /tmp
      
    • 打包/tmp下所有文件

      root@haoyu1[16:43:32]~# find /tmp/ -type f | xargs tar czf tmp.tar.gz
      tar: Removing leading `/' from member names
      root@haoyu1[16:43:49]~# ll
      total 16
      -rw-r--r--. 1 root root 126 Aug 13 16:43 tmp.tar.gz
      
      #另一种方法
      tar czf tmp.tar.gz $(find /tmp/ -type f)
      
    • 打包链接文件,打包链接文件的真实文件

      root@haoyu1[16:46:07]~# tar czfh local.tar.gz  etc/rc.local
      
    • 排除操作

      #排除单个
      root@haoyu1[17:05:32]~# tar czf etc.tar.gz /etc/ --exclude=etc/services 
      #排除多个
      root@haoyu1[17:05:32]~# tar czf etc.tar.gz /etc/ --exclude=etc/passwd -exclude=etc/shadow
      
    • 将需要排除的文件写入文件中 然后进行排除

      root@haoyu1[17:16:53]~#  cat pc.txt 
      etc/gshadow 
      etc/gshadow
      etc/passwd 
      etc/passwd
      etc/shadowetc/shadow 
      etc/security/opasswd 
      etc/pam.d/passwd 
      root@haoyu1[17:16:53]~#  tar czXf pc.txt etc.tar.gz  
      /etc/
      
  • 练习

1.环境准备
root@haoyu1[17:19:12]~# yum install mariadb-server
root@haoyu1[17:20:08]~# systemctl start mariadb
root@haoyu1[17:20:32]~# mkdir /backup

案例1.mysql备份及恢复
root@haoyu1[17:20:43]~# tar cJk /backup/mysql.tar.xz /var/lib/mysql/
root@haoyu1[17:21:38]~# tar xf /backup/mysql.tar.xz -C /

案例2 mysql备份及恢复
root@haoyu1[17:22:36]~# cd /var/lib/mysql/
root@haoyu1[17:22:55]/var/lib/mysql# tar cJf /backup/mysql.tar.xz *
root@haoyu1[17:23:19]/var/lib/mysql# tar tf /backup/mysql.tar.xz
root@haoyu1[17:23:50]/var/lib/mysql# tar xf /backup/mysql.tar.xz -C /var/lib/mysql/

你可能感兴趣的:(Day14-压缩命令的学习(gzip、zip、tar))