压缩与归档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了压缩与归档相关的知识,希望对你有一定的参考价值。

 压缩与归档,这是两种不同的概念,其用途也不一样,压缩是通过压缩算法对文件进行压缩,其体积会根据算法减少;归档则是将文件打包,相当与给文件加了个“盒子”,体积还有可能增大。
 压缩工具只能压缩单个文件,不能压缩多个文件或文件夹,所以需要先归档文件再压缩。
  常见的压缩工具有:gzip、bzip2、xz、zip、compress(比较古老了)
  常见的归档工具有:zip(既可压缩、也可归档)、tar、cpio

压缩工具 对应解压工具 展开工具 压缩后缀
compress uncompress zcat .Z
gzip gunzip、gzip -d zcat .gz
bzip2 bunzip2、bzip2 -d bzcat .bz2
xz unxz、xz -d xzcat .xz
zip unzip、zip -d zip -l .zip

一、compress
  compress 是早期Linux使用的压缩工具,到现在基本不用了。

        压缩文件:
        [[email protected] ~]# compress  messages  
        [[email protected] ~]# ll messages 
        -rw-------.  1 root root 4354 Jan  7 21:49 messages.Z
        解压文件:
        [[email protected] ~]# uncompress  messages.Z 

二、gzip
  gzip 这是以前较为流行的压缩工具,采用LZ77算法,至今也还能见其被使用

    gzip [options]   filename 
        -d  解压,相当于gunzip 
        -t  test,检查压缩文件是否完整,并不解压
        -r  对文件夹中的所文件进行压缩/解压,并不能真正的压缩/解压文件夹
        -c  --stdout  --to-stdout,将压缩结果作为标准化输出,不修改原文件
        -#  指定压缩比,1-9,级别越高压缩率越高,越消耗资源
        对messages文件进行压缩:
        [[email protected] ~]# ll -h  messages
        -rw-r--r--.  1 root root  10K Jan  7 22:05 messages


        [[email protected] ~]# gzip  -9  messages 


        [[email protected] ~]# ll -h messages.gz 
        -rw-r--r--. 1 root root 54 Jan  7 22:05 messages.gz


        对messages文件进行解压:
        [[email protected] ~]# gunzip messages.gz 
        或   [[email protected] ~]# gzip -d messages.gz
        [[email protected] ~]# ll -h messages 
        -rw-r--r--. 1 root root 10K Jan  7 22:05 messages


        不解压,仅查看文件:
        [[email protected] ~]# zcat   messages.gz  |  less


        不管是压缩还是解压都会删除原文件,若要保留则:
        保留源文件压缩:
        [[email protected] ~]# gzip -c  messages  >>messages.gz
        [[email protected] ~]# ll mess*
        -rw-------. 1 root root 46245 Jan  7 22:23 messages
        -rw-r--r--. 1 root root  3385 Jan  7 22:35 messages.gz
        保留原文件解压:
        [[email protected] ~]# gzip -d  -c  messages.gz  >messages
        [[email protected] ~]# ll messages*
        -rw-r--r--. 1 root root 46245 Jan  7 22:32 messages
        -rw-------. 1 root root  3294 Jan  7 22:23 messages.gz

三、bzip2
  bzip2,对gzip进行了升级改进,压缩算法为 LZ77/LZ78,其用法与gzip非常类似。

        bzip2  [options]  filename1  filename2 ... 
        -d  解压文件,相当于bunzip2
        -k  保留源文件
        -t  test,检查压缩文件是否完整,并不解压
        -q  静默操作
        -r  对文件夹中的所文件进行压缩/解压,并不能真正的压缩/解压文件夹
        -c  --stdout  --to-stdout,将压缩结果作为标准化输出,不修改原文件
        -#  与gzip类似,指定压缩级别,1-9,越高越占用资源


        压缩文件:
        [[email protected] ~]# bzip2 -k -9  messages  
        [[email protected] ~]# ll mes* -h
        -rw-------. 1 root root  46K Jan  7 22:23 messages
        -rw-------. 1 root root 3.0K Jan  7 22:23 messages.bz2
        可以看到压缩还是挺强的
        查看压缩文件:
        [[email protected] ~]# bzcat messages.bz2   | less
        解压文件:
        [[email protected] ~]# bzip2 -d  messages.bz2  -c >123
        解压文件,并重输出到指定文件123 

四、xz
  xz 是推荐使用的一种压缩格式,在网上经常被使用为源代码打包的首选格式。

        xz  [options]    filename  ...
        -d  解压文件,相当于bunzip2
        -k  保留源文件
        -t  test,检查压缩文件是否完整,并不解压
        -q  静默操作
        -r  对文件夹中的所文件进行压缩/解压,并不能真正的压缩/解压文件夹
        -c  --stdout  --to-stdout,将压缩结果作为标准化输出,不修改原文件
        -#  与gzip类似,指定压缩级别,1-9,越高越占用资源
        -F  指定压缩格式,可以为LZMA算法,压缩后的文件后缀为.lzma,不常用
        压缩文件:
        [[email protected] ~]# xz -k -9 messages 
        [[email protected] ~]# ll messages.xz   -h
        -rw-------. 1 root root 2.6K Jan  7 22:23 messages.xz
        查看文件:
        [[email protected] ~]# xzcat  messages.xz  | less
        解压文件:
        [[email protected] ~]# xz -d  messages.xz  

五、zip
  zip也是一种比较古老的压缩工具了,其支持压缩、打包,并且Windows/Linux都默认支持,不需要解压安装工具。

        压缩文件:
        [[email protected] ~]# zip  messages.zip messages
            adding: messages (deflated 93%
        注意,先指定压缩后的文件名,然后才是源文件
        解压文件:
        [[email protected] ~]# unzip messages.zip 
        查看文件:
        [[email protected] ~]# zcat  messages.zip
        打包并压缩文件:
        [[email protected] ~]# zip  log.zip log/*
            adding: log/anaconda/ (stored 0%)
            adding: log/anaconda.zip (stored 0%)
            adding: log/audit/ (stored 0%)
            adding: log/boot.log (deflated 80%)
            adding: log/btmp (stored 0%)
            adding: log/btmp-20180103 (stored 0%)


        [[email protected] ~]# ll -h  log.zip  
        -rw-r--r--. 1 root root 391K Jan  7 23:16 log.zip

六、tar
  tar是个专门用于打包的工具,使用gzip、bzip2、xz等工具的递归压缩,可以发现实际上是对文件夹内的所有文件进行单独的压缩,并不是将多个文件压缩成个压缩包。

        [[email protected] ~]# gzip -r  log
        [[email protected] ~]# ll log
        -rw-r--r--. 1 root root 184715 Jan  7 19:37 anaconda.zip.gz
        -rw-r--r--. 1 root root   2759 Jan  7 19:37 boot.log.gz
        -rw-------. 1 root root    619 Jan  7 19:37 cron-20171220.gz
        -rw-------. 1 root root    659 Jan  7 19:37 cron-20180103.gz
        -rw-------. 1 root root   1621 Jan  7 19:37 cron-20180107.gz
        ...

  tar的作用就是将多个文件打包(归档)并压缩

        tar  [options] file  ...
        -c  创建归档
        -x  解开归档
        -t  不展开归档,仅查看
        -f  指定归档的文件名称
        -j  --bzip2,调用bzip2工具进行压缩/解压
        -J  --xz,调用xz工具进行压缩/解压
        -z  --gzip 调用gzip工具进行压缩/解压
        -v  显示过程
        -p  保留权限
        -C  更改解压/压缩的目录,缺省为本地
        常见用法:
        tar  -cf   归档.tar   源文件....     //创建归档
        tar  -xf   归档.tar   解压文件        //解压归档
        tar  -tf    归档.tar          //查看归档
        创建归档并使用xz压缩:
        [[email protected] ~]# tar   -Jcvf mess.tar.xz  messages  
        解压归档并使用xz解压:
        [[email protected] ~]# tar -Jxvf mess.tar.xz  -C  /tmp/
        不解压仅展开归档:
        [[email protected] ~]# tar -tvf mess.tar.xz 
        -rw------- root/root     46245 2018-01-07 22:23 messages

以上是关于压缩与归档的主要内容,如果未能解决你的问题,请参考以下文章

linux文件归档压缩与上传下载

Linux文件归档压缩与解压缩

压缩与归档

Linux文件压缩与归档

rhel7文件的归档与压缩

04:归档及压缩重定向与管道操作find精确查找vim高级使用