linux中常见的压缩命令

作者: 微笑沉默 | 来源:发表于2021-01-12 22:12 被阅读0次

    1. gzip

    gzip命令创建的文件后缀名为.gz

    [dmtsai@study ~]$ gzip [-cdtv#] 文件名
    [dmtsai@study ~]$ zcat 文件名.gz
    选项与参数:
    -c :将压缩的数据输出到屏幕上,可通过数据流重导向来处理;
    -d :解压缩的参数;
    -t :可以用来检验一个压缩文件的一致性~看看文件有无错误;
    -v :可以显示出原文件/压缩文件的压缩比等信息;
    -# :# 为数字的意思,代表压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6
    范例一:找出 /etc 下面 (不含子目录) 容量最大的文件,并将它复制到 /tmp ,然后以 gzip 压缩 
    
    1.1 压缩文件

    使用gzip压缩文件,源文件会直接压缩,所以压缩前先备份一份。-v显示压缩的百分比。压缩名称是文件名.gz

    [root@zhanghao-server ~]# gzip -v backup.sh
    backup.sh: 8.1% -- replaced with backup.sh.gz
    [root@zhanghao-server ~]# ls
    anaconda-ks.cfg backup backup.sh.gz data
    
    
    1.1.1 读取压缩文件

    压缩纯文本文件后,可以使用zcat进行读取

    [root@zhanghao-server ~]# zcat backup.sh.gz
    #!/bin/bash
    
    DATA_DIR=
    BACKUP_DIR=
    
    
    zgrep截取
    [root@zhanghao-server ~]# zgrep -n 'bash' backup.sh.gz
    1:#!/bin/bash
    
    解压

    有两种方式,gzip -d和gunzip

    $ gzip -d backup.sh.gz
    

    2. bzip2

    bzip2效果要比gzip好用

    bzip2: 
    选项与参数:
    -c :将压缩的过程产生的数据输出到屏幕上!
    -d :解压缩的参数
    -k :保留原始文件,而不会删除原始的文件喔!
    -z :压缩的参数 (默认值,可以不加)
    -v :可以显示出原文件/压缩文件的压缩比等信息;
    -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 
    
    2.1

    和gzip一样,bzip2是在源文件上进行压缩的,操作前备份,后缀名为.bz2

    [root@zhanghao-server ~]# bzip2 -v backup.sh
      backup.sh: 0.451:1, 17.730 bits/byte, -121.62% saved, 37 in, 82 out.
    [root@zhanghao-server ~]# ll -h
    total 8.0K
    -rw-------. 1 root root 1.8K Oct 3 15:54 anaconda-ks.cfg
    drwxr-xr-x. 4 root root 60 Oct 9 13:16 backup
    -rw-r--r--. 1 root root 82 Oct 8 10:45 backup.sh.bz2
    drwxr-xr-x. 3 root root 33 Oct 8 10:45 data
    
    #### 设置压缩级别
     $ bzip2 -9 -c backup.sh > backup.sh.bz2
    
    2.1.1 bzcat读取
    [root@zhanghao-server ~]# bzcat backup.sh.bz2
    #!/bin/bash
    
    DATA_DIR=
    BACKUP_DIR=
    
    2.1.2 解压
    
    $ bzip2 -d backup.sh.bz2
    
    2.1.3 压缩保留源文件
    [root@zhanghao-server ~]# bzip2 -v -k backup.sh
      backup.sh: 0.451:1, 17.730 bits/byte, -121.62% saved, 37 in, 82 out.
    [root@zhanghao-server ~]# ls
    anaconda-ks.cfg backup backup.sh backup.sh.bz2 data
    [root@zhanghao-server ~]#
    

    3. xz

    xz也是支持zxcat命令的

    选项与参数:
    -d :就是解压缩啊!
    -t :测试压缩文件的完整性,看有没有错误
    -l :列出压缩文件的相关信息
    -k :保留原本的文件不删除~
    -c :同样的,就是将数据由屏幕上输出的意思!
    -# :同样的,也有较佳的压缩比的意思! 
    

    3.1 压缩文件

    [root@zhanghao-server ~]# xz -v backup.sh
    backup.sh (1/1)
      100 % 96 B / 37 B = 2.595
    [root@zhanghao-server ~]# ls
    anaconda-ks.cfg backup backup.sh.xz data
    

    4. tar打包

    上面是对纯文件进行处理的。如果我们是对一个目录打包称为一个压缩包,那就是用tar指令。

    选项与参数:
    -c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename)
    -t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了;
    -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
    特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。
    -z :通过 gzip 的支持进行压缩/解压缩:此时文件名最好为 *.tar.gz
    -j :通过 bzip2 的支持进行压缩/解压缩:此时文件名最好为 *.tar.bz2
    -J :通过 xz 的支持进行压缩/解压缩:此时文件名最好为 *.tar.xz
    特别留意, -z, -j, -J 不可以同时出现在一串命令行中
    -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来!
    -f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项啰!(比较不会忘记)
    -C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
    其他后续练习会使用到的选项介绍:
    -p(小写) :保留备份数据的原本权限与属性,常用于备份(-c) 重要的配置文件
    -P(大写) :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
    --exclude=FILE:在压缩的过程中,不要将 FILE 打包! 
    
    • 压缩

    tar -jcv -f filename.tar.bz2

    • 查询

    tar -jtv -f filename.tar.bz2

    • 解压

    tar -jxv -f filename.tar.bz2

    4.1 压缩

    • 压缩/etc/下面所有文件,保留原格式

    tar -zpcv -f /root/etc.tar.gz /etc

    4.2 查看tar中文件

    tar -ztv -f /root/etc.tar.gz

    4.3 打包过程中排除某个目录

    [root@zhanghao-server backup]# ls
    data data_2G nihao passwd
    [root@zhanghao-server backup]# cd ..
    [root@zhanghao-server ~]# ls
    anaconda-ks.cfg backup backup.sh.xz data etc.tar.gz
    [root@zhanghao-server ~]# tar -zcv -f /root/backup.tar.gz --exclude=/root/backup/data /root/backup
    tar: Removing leading `/' from member names
    /root/backup/
    /root/backup/nihao/
    /root/backup/nihao/nihao
    /root/backup/passwd
    /root/backup/data_2G
    [root@zhanghao-server ~]# tar -ztv -f /root/backup.tar.gz
    drwxr-xr-x root/root 0 2018-10-09 13:16 root/backup/
    drwxr-xr-x root/root 0 2018-10-08 10:45 root/backup/nihao/
    -rw-r--r-- root/root 0 2018-10-08 10:45 root/backup/nihao/nihao
    -rw-r--r-- root/root 1118 2018-10-08 10:45 root/backup/passwd
    -rw-r--r-- root/root 1073741824 2018-10-09 13:16 root/backup/data_2G
    

    4.4 根据时间备份

    将比某日的时间新的文件进行打包

    . 先由 [find](../Text/index.html#find) 找出比 /etc/passwd 还要新的文件
    [root@study ~]# find /etc -newer /etc/passwd
    ....(过程省略) ....
    # 此时会显示出比 /etc/passwd 这个文件的 mtime 还要新的文件名,
    # 这个结果在每部主机都不相同!您先自行查阅自己的主机即可,不会跟鸟哥一样!
    [root@study ~]# ll /etc/passwd
    -rw-r--r--. 1 root root 2092 Jun 17 00:20 /etc/passwd
    # 2\. 好了,那么使用 tar 来进行打包吧!日期为上面看到的 2015/06/17
    [root@study ~]# tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 \
    > --newer-mtime="2015/06/17" /etc/*
    tar: Option --newer-mtime: Treating date `2015/06/17' as 2015-06-17 00:00:00
    tar: Removing leading `/' from member names
    /etc/abrt/
    ....(中间省略) ....
    /etc/alsa/
    /etc/yum.repos.d/
    ....(中间省略) ....
    tar: /etc/yum.repos.d/CentOS-fasttrack.repo: file is unchanged; not dumped
    # 最后行显示的是“没有被备份的”,亦即 not dumped 的意思!
    # 3\. 显示出文件即可
    [root@study ~]# tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | grep -v '/$'
    # 通过这个指令可以调用出 tar.bz2 内的结尾非 / 的文件名!就是我们要的啦!
    
    

    4.5 tar流式传输

    通过标准输入输出数据流重定向和管道的方式实现,将处理文件一边打包一边解压到目标目录中去。

    相关文章

      网友评论

        本文标题:linux中常见的压缩命令

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