本文旨在学习打包,压缩,解压缩。学习使用tar、gzip/gunzip/zcat、bzip2/bunzip2/bzcat、xz/unxz/xzcat、zip/unzip、cpio等命令的使用。


前言:


    首先要弄清两个概念:打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)


tar命令详解


    语法:tar[选项][参数]

常用选项:

    -z或--gzip或--ungzip:通过gzip指令处理备份文件;

    -j:通过bzip2指令处理备份文件;

    -c或--create:建立新的备份文件;

    -v:显示操作过程;

    -f<备份文件>或--file=<备份文件>:指定备份文件;

   -x或--extract或--get:从备份文件中还原文件;解压缩

   -t或--list:列出备份文件的内容

   -C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项

   --exclude=<范本样式>:排除符合范本样式的文件。


    通过bzip2令处理备份文件

        打包: tar -cf  log.tar access.log error.log (要打包的文件)

     压缩: tar -jcvf log.tar.bz2 log.tar

     打包后压缩: tar -jcvf log.tar.bz2  access.log error.log(要压缩的文件)

     查询文件内容: tar -tf log.tar.bz2  

     解压缩: tar -jxvf log.tar.bz2 -C /backup/  (欲解压缩的目录)

 


    通过gzip指令处理备份文件

压 缩:tar -zcvf log.tar.gz 要被压缩的文件或目录名称 

查 询:tar -ztvf log.tar.gz

解压缩:tar -zxvf log.tar.gz -C 欲解压缩的目录

 

    实例:

tar -zcvf etc.tar.gz /etc/*

tar -zcvf etc.tar.gz --exclud=/etc/services /etc/*

tar -zxvf etc.tar.gz -C /tmp/etcbak



gzip/gunzip/zcat命令


    gzip常用选项:

        -c: 将压缩或解压缩的结果输出至标准输出

       -d: 解压缩,相当于gunzip

        -r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;

        -#:1-9,指定压缩比,值越大压缩比越大


    压缩tar打包的文件:

    gzip -r log.tar 压缩后的文件名为log.tar.gz


    压缩1: gzip access.log (压缩完后,源文件消失)

    压缩2: gzip -c access.log >access.log.gz (压缩后保留源文件)


    解压1:gzip -d access.gz (解压后,压缩包消失)

    解压2:gzip -c -d access.log.gz >access.log(解压后保留压缩包)

    解压3:gunzip access.gz


    zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。

    具体使用请google

    zcat access.log.gz >access.log



bzip2/bunzip2/bzcat命令


    bzip2 [OPTION]... FILE ...

-k: keep,  保留原文件

-d:解压缩

-#:1-9 ,压缩比,默认为6

 

bzcat :不显式解压缩的前提下查看文本文件内容;



xz/unxz/xzcat命令


    xz是一种新的压缩文件格式,号称压缩率之王采用LZMA SDK压缩,目标文件较gzip压缩文件(.gz或.tgz)小30%,较2小15%。

    

    xz [OPTION]... FILE ...

        -k: keep,  保留原文件;

        -d:解压缩

        -#:1-9 ,压缩比,默认为6


  xzcat:  不显式解压缩的前提下查看文本文件内容


zip/unzip命令



打包压缩:zip filename.zip filename

解压缩:unzip filename.zip






cpio 命令



cpio命令主要是用来建立或者还原备份档的工具程序,cpio命令可以复制文件到归档包中,或者从归档包中复制文件。它可以解压以“.cpio” “.tar” 结尾的文件。

    cpio语法:

cpio [option] > 文件名或者设备名

cpio [option] < 文件名或者设备名


    常用option:

-o或--create:执行copy-out模式,建立备份档;

-i或--extract:执行copy-in模式,还原备份档;

-t或--list:将输入的内容呈现出来;

-u或:置换所有文件,不论日期时间的新旧与否,皆不予询问而直接覆盖;

-v或--verbose:详细显示指令的执行过程;


-d或--make-directories:如有需要cpio会自行建立目录;

-c:一种较新的存储方式

-B: 将输入/输出的区块大小改成5210Bytes;


    实例:

    [root@study tmp]# ls  access.log error.log |cpio -ocvB >log.cpio
    access.log
    error.log
    2 blocks


    将/etc下的所有普通文件都备份到/opt/etc.cpio

    find /etc –type f | cpio –ocvB >/opt/etc.cpio
    find /etc –type f | cpio –ov >/opt/etc.cpio


    内容预览:

cpio -tv < etc.cpio


解压缩:

    cpio -iv < etc.cpio

    cpio -ivd < etc.cpio


    rpmcpio命令:

rpm2cpio命令用于将rpm软件包转换为cpio格式的文件

rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -idv