系统基础之压缩归档工具详解

压缩和解压缩工具



概论


 在使用操作系统时,我们常会遇到大文件,会使我们很头疼.在面对时间和空间上的选择,只能选择空间,这就要用到压缩工具和归档工具,下面为大家一一介绍.

 压缩文件只压缩文本格式的文件,通常不压缩已经是压缩的文件.

 压缩文件就会涉及到压缩比:

   原理:通过了解文本文件的数据形式,运用压缩算法,

   目的:时间换空间

 工具:

   压缩:

      compress/uncompress 结尾:.z

      gzip/gunzip      结尾: .gz

      bzip2/bunzip2     结尾: .bz2

      xz/unxz         结尾: .xz

   归档:

      zip/unzip

      tar,cplo


压缩工具详解


1.gzip/gunzip工具/zcat

  特点:压缩后,删除原文件

  格式:

    gzip [ -acdfhlLnNrtvV19 ] [-S 后缀] [ 文件名 …  ]

    gunzip [ -acfhlLnNrtvV ] [-S 后缀] [ 文件名 …  ]

    zcat [ -fhLV ] [ 文件名 …  ]     查看gzip文件

  选项:

    -d:–decompress  解压缩,相当于gunzip

    -#:指定压缩比,默认是6  数字越大,压缩比越大,建议不修改默认值,除非有特定需求

    -c:将压缩结果输出至标准输出,原文件保留;

      使用格式:gzip -c FILE > /PATH/TO/SOMEFILE.gz

        [root@wen-7 ~]# gzip vimrc     
    [root@wen-7 ~]# ll
    总用量 27064
    -rw-r--r-- 1 root root      230 8月  17 09:18 vimrc.gz
    
    [root@wen-7 ~]# gzip -d vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root      434 8月  17 09:18 vimrc
    
    [root@wen-7 ~]# gzip -7 vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root      230 8月  17 09:18 vimrc.gz
    
    [root@wen-7 ~]# gzip -c vimrc > /tmp/vim.gz
    [root@wen-7 ~]# ll /tmp
    -rw-r--r-- 1 root root      230 8月  18 09:07 vim.gz

2.bzip2/bunzip2/bcat

  bzip2, bunzip2 – 一种块排序文件压缩软件,v0.9.5

  bzcat – 将文件解压缩至标准输出

  bzip2recover – 恢复损坏的 bzip2 文件

  格式:

    bzip2 [ -cdfkqstvzVL123456789 ] [ filenames …  ]

    bunzip2 [ -fkvsVL ] [ filenames …  ]

    bzcat [ -s ] [ filenames …  ]

    bzip2recover filename

  选项:

    -d:解压缩

    -#:指定压缩比,默认是6  数字越大,压缩比越大,建议不修改默认值,除非有特定需求

    -k –keep:保留原文件

    [root@wen-7 ~]# bzip2 vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2
    [root@wen-7 ~]# bzip2 -d vimrc.bz2 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  434 8月  17 09:18 vimrc
    [root@wen-7 ~]# bzip2 -7 vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2
    [root@wen-7 ~]# bzip2 -d vimrc.bz2 
    [root@wen-7 ~]# bzip2 -7 -k  vimrc
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2

3.xz/unxz/xzcat ( 压缩效果最好的压缩工具 )

  unxz is equivalent to xz –decompress.

  xzcat is equivalent to xz –decompress –stdout.

  lzma is equivalent to xz –format=lzma.

  unlzma is equivalent to xz –format=lzma –decompress.

  lzcat is equivalent to xz –format=lzma –decompress –stdout.

  格式:

    xz [option]…  [file]…

  选项:

    -d:解压缩

    -#:指定压缩比,默认是6  数字越大,压缩比越大,建议不修改默认值,除非有特定需求

    -k –keep:保留原文件

[root@wen-7 ~]# xz vimrc
[root@wen-7 ~]# ll
-rw-r--r-- 1 root root  268 8月  17 09:18 vimrc.xz

[root@wen-7 ~]# xz -d vimrc.xz 
[root@wen-7 ~]# xz -7 vimrc 
[root@wen-7 ~]# xz -d vimrc.xz 
[root@wen-7 ~]# xz -7 -k vimrc
[root@wen-7 ~]# ll
-rw-r--r-- 1 root root  434 8月  17 09:18 vimrc
-rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2
-rw-r--r-- 1 root root  268 8月  17 09:18 vimrc.xz

4.zip:最通用的压缩工具

  特点:压缩比有限,zip既能归档,又能压缩

     zip/unzip    

    后缀名: .zip

  格式:

     zip filename.zip file..

[root@wen-7 ~]# zip vim.zip vimrc
  adding: vimrc (deflated 53%)
[root@wen-7 ~]# ll
-rw-r--r-- 1 root root  366 8月  18 09:17 vim.zip


归档工具详解


  刚才介绍的是压缩文具,但压缩工具只能压缩文件,不支持压缩目录.linux而言,要想对目录进行压缩,不对目录里的文件单独压缩,要先对目录进行归档操作,下面为大家介绍归档工具:

  归档工具主要有两个: tar  cplo

1.tar – tar 档案文件管理程序的 GNU 版本。

 格式:

    tar [option] …FIle..

 选项:

   -v: 显示详细信息,可于任何选项一起使用

-c: 创建归档

  配合 -f /PATH/TO/SOMEFILE.tar file…

    [root@wen-7 ~]# tar -cvf /tmp/vim.tar vimrc    
    -rw-r--r-- 1 root root    10240 8月  18 09:28 vim.tar

-x:展开归档

    配合 -f /PATH/TO/SOMEFILE.tar

    默认展开到当期路径下,使用 -C /PATH/TO/SOMEDIR  到指定路径下

        [root@wen-7 ~]# tar xvf /tmp/vim.tar    
        -rw-r--r-- 1 root root  434 8月  17 09:18 vimrc
        
        [root@wen-7 ~]# tar xvfC  /tmp/vim.tar  /mnt
        vimrc
        [root@wen-7 ~]# ll /mnt
        总用量 4
        -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc

   

   -t:查看归档文件的文件列表

    配合-f /PATH/TO/SOMEFILE.tar

       [root@wen-7 ~]# tar -tvf /tmp/vim.tar         
        -rw-r--r-- root/root       434 2016-08-17 09:18 vimrc

    

  扩展:

   文件或目录tar归档后,还可以执行压缩功能,配合压缩工具,就能实现多个文件或目录

    归档并压缩 :

 -z : gzip2

    -zcf /PATH/TO/SOMEFILE.tar.gz file….  创建归档并压缩

    -zxf  /PATH/TO/SOMEFILE.tar.g       解压缩并展开归档

   [root@wen-7 tmp]# tar -zcvf /tmp/vim.tar.gz /tmp/vim.tar    
    -rw-r--r-- 1 root root      360 8月  18 09:47 vim.tar.gz
    
    [root@wen-7 tmp]# tar -zxvf /tmp/vim.tar.gz 
    [root@wen-7 tmp]# ll
    总用量 8
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 312 8月  18 09:52 vim.tar.gz

 

 -J: bzip2

    -jcf  归档并压缩 

    -jxf  解压缩并展开归档

    [root@wen-7 ~]# tar Jcf /tmp/vim.tar.bzip2 vimrc     
    [root@wen-7 ~]# ll /tmp
    总用量 12
    drwx------ 2 pcp  pcp   39 8月  18 09:55 pcp.7z8yRiYHw
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 360 8月  18 09:55 vim.tar.bzip2
    -rw-r--r-- 1 root root 360 8月  18 09:54 vim.tar.gz
    [root@wen-7 ~]# tar Jxf /tmp/vim.tar.bzip2 
    [root@wen-7 ~]# ll /tmp
    总用量 12
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 360 8月  18 09:55 vim.tar.bzip2
    -rw-r--r-- 1 root root 360 8月  18 09:54 vim.tar.gz

 -j: xz

   -jcf 归档并压缩  

   -jxf 解压缩并展开归档

    [root@wen-7 ~]# tar jcf /tmp/vim.tar.xz vimrc     
    [root@wen-7 ~]# ll /tmp
    总用量 16
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 360 8月  18 09:55 vim.tar.bzip2
    -rw-r--r-- 1 root root 360 8月  18 09:54 vim.tar.gz
    -rw-r--r-- 1 root root 333 8月  18 09:57 vim.tar.xz
    [root@wen-7 ~]# tar jxf /tmp/vim.tar.xz vimrc 
    [root@wen-7 ~]# ll /tmp
    总用量 16
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc

实战: 下载redls-3.0.2.tar.gz   https://www.redis.iso

   1.展开至tmp目录,重新创建压缩为xz格式

   [root@wen-7 ~]# tar xvzf redls-3.0.2.tar.gz
        [root@wen-7 ~]# tar -jcf redls-3.0.2.tar.xz sh/
        -rw-r--r-- 1 root root  4739 8月  14 11:05 sdfaf.tar.gz
        -rw-r--r-- 1 root root  4407 8月  14 11:14 sdfaf.tar.xz

2.cpio 复制从或到文件 (打包归档)

   cpio,命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,他可以解压以".cpio"或者".tar"结尾的文件

   格式:

    coip [选项] > 文件名或设备名

    coip [选项] < 文件名或设备名

   选项:

                -o 将文件拷贝打包成文件或者将文件输出到设备上

    -i 解包,将打包文件解压或将设备上的备份还原到系统-

    t 预览,查看文件内容或者输出到设备上的文件内容

    -v 显示打包过程中的文件名称。

    -d 解包生成目录,在cpio还原时,自动的建立目录

    -c 一种较新的存储方式

            

  实战演练:

    1. 将/etc/备份

        [root@wen-7 ~]# find /etc -print| cpio -ov > etc.cpio        
        /etc/smartmontools/smartd_warning.sh
        54092 块
        [root@wen-7 ~]# ll
        总用量 27064
        -rw-r--r-- 1 root root 27695104 8月  17 22:56 etc.cpio

    2. 内容预览

        -rwxr-xr-x 1root root 5767 Jun 10 2014 /etc/smartmontools/smartd_warning.sh        
        54092 块
        [root@wen-7 ~]# cpio -tv < etc.cpio

   3. 要解包文件

        cpio: 未创建 /etc/smartmontools/smartd_warning.sh:已有更新或同样新的版本存在        
        /etc/smartmontools/smartd_warning.sh
        54092 块
        [root@wen-7 ~]# cpio -iv <etc.cpio
        
        /etc/smartmontools/smartd_warning.sh
        54092 块
        [root@wen-7 ~]# cpio -idv <etc.cpio

原创文章,作者:wencx,如若转载,请注明出处:http://www.178linux.com/37120

(0)
wencxwencx
上一篇 2016-08-18
下一篇 2016-08-18

相关推荐

  • shell脚本(一)

     本周是来马哥教育的第四周,本周重点是shell脚本的编写,本篇博客也是以shell脚本的简述为主。 一.shell脚本的概念及意义     shell脚本是linux下的一种编程方式,百度百科给出这样的释义:脚本(shell script)是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一…

    Linux干货 2017-08-05
  • 软件包管理

    软件包管理 软件运行和编译 ABI:应用程序二进制接口;直接给编译好的二进制使用; windows与linux不兼容, windows: ELF linux: PE 库级别的虚拟化: linux:WINE windows:Cywin API:定义了和库之间的接口;编写应用程序时调用的函数之类的; 编译程序源代码(.c) –> 预编译(.i)…

    Linux干货 2017-04-21
  • Linux常用基础命令

    pwd显示工作目录 [root@localhost ~]# pwd/root cd 切换回家目录,注意:bash中,~表示家目录: [root@localhost ~]# cd[root@localhost ~]# cd ~USERNAME:切换至指定用户的家目录;cd ~切换回自己的家目录; cd -:在上一次所在目录与当前目录之间来回切换; […

    Linux干货 2017-06-26
  • Linux文本处理三剑客之sed

    处理文本工具sed sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件,简化对文…

    Linux干货 2016-08-15
  • Linux系统发展史

    引言:     Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具…

    Linux干货 2016-10-19
  • 几种常见开源协议

    几种常见的开源协议: 一、GPL详解: 在自由软件所使用的各种许可证之中,最为人们注意的也许是通用公开许可证(General Public License,简称GPL)。 GPL同其它的自由软件许可证一样,许可社会公众享有:运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 GPL还规定:只要这…

    Linux干货 2016-07-12