美文网首页LinuxLinux学习之路Hyman7和他的Linux学习之路
Day14-压缩命令的学习(gzip、zip、tar)

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

作者: 郝煜_Hyman | 来源:发表于2019-08-13 17:25 被阅读0次

    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)

        本文链接:https://www.haomeiwen.com/subject/xftbjctx.html