美文网首页
Linux压缩/解压缩操作

Linux压缩/解压缩操作

作者: 揭光智 | 来源:发表于2018-11-17 13:42 被阅读15次

    在Linux操作系统中,有多种压缩方法,其中比较长见的有是:compress,bzip2,gzip,zip等等.他们对应的文件后缀如下:

    *.z         //使用compress方式压缩产生的文件,不过这种方式已经比较长用了
    *.bz2       //使用bzip2方式压缩产生的文件
    *.gz        //使用gzip方式压缩产生的文件
    *.zip       //使用zip方式压缩产生的文件
    
    bzip2

    就压缩的效率来看,bzip2的压缩算法是最好的,正常情况下都比gzip的压缩效果好,压缩出来的文件的后缀为: .bz2

    bzip2的常用指令选项如下:

    基础格式: bzip2 [Options] file1 file2 file3
    指令选项:(默认功能为压缩)
    -c       //将输出写至标准输出
    -d       //进行解压操作
    -v       //输出压缩/解压的文件名和压缩比等信息
    -k       //在压缩/解压过程中保留原文件
    -digit     //digit部分为数字(1-9),代表压缩速度,digit越小,则压缩速度越快,但压缩效果越差,默认为6.
    
    • bzip2 exp1.txt exp2.txt     //分别将exp1.txt和exp2.txt压缩,且不保留原文件.
    • bzip2 -dv exp1.bz2       //将exp1.bz2解压,并显示压缩比等信息.
    • bzip2 -kd exp1.bz2       //将exp1.bz2解压,并且原压缩文件exp1.bz2不会消失

    注:对应于 bzip2,可以使用 bunzip2 进行解压操作,效果类似bunzip2 -d xx,同时可以使用bzcat读取压缩文件的内容并显示在标准输出,功能类似于 bzip2 -c xx.

    gzip

    虽然相对bzip2压缩来说,gzip的效果没有那么好,但gzip使用的更加广泛,比如Apache Tomcat,MySQL,JDK,Redis,Nginx,MongoDB,等等均提供了
    gzip的安装包,但基础不提供bzip2的包,所以我们在了解了bzip2压缩后,还是非常有必要了解一下gzip压缩的,压缩出来的文件的后缀为: .gz

    gzip不仅可以用于解压.gz,还可以用于解压compress等压缩方式产生的压缩文件.
    其中不带任何选项和参数使用gzip或只带有参数 - 时,gzip从标准输入读取输入,并在标准输出输出压缩结果.

    gzip的常用指令选项如下:

    基础格式: gzip [Options] file1 file2 file3
    指令选项:(默认功能为压缩)
    -c    //将输出写至标准输出,并保持原文件不变
    -d    //进行解压操作
    -v    //输出压缩/解压的文件名和压缩比等信息
    -digit  //digit部分为数字(1-9),代表压缩速度,digit越小,则压缩速度越快,但压缩效果越差,默认为6.
    

    注意,使用 gzip 指令压缩/解压文件均会使得源文件消失,即源文件会被直接解压/压缩而不保留备份.
    若想要保留原文件可以使用 -c 参数结合数据流重定向操作(见下例).

    • gzip exp1.txt exp2.txt     //分别将exp1.txt和exp2.txt压缩,且不保留原文件.
      注意对于多个文件参数是将多个文件分别进行压缩,而不是压缩在一起.参考下文 tar 指令.
    • gzip -dv exp1.gz       //将exp1.gz解压,并显示压缩比等信息.
    • gzip -cd exp1.gz > exp.1   //将exp1.gz解压的结果放置在文件exp.1中,并且原压缩文件exp1.gz不会消失

    特别注意第三条实例, -d 指示解压缩,-c 参数是将结果输出至标准输出,通过 > 符号,将原本输出至标准输出的解压结果重定向至exp.1中,既解压了文件,原压缩文件也没有消失.

    注:对应于 gzip,可以使用 gunzip 进行解压操作,效果类似gzip -d xx,同时可以使用zcat读取压缩文件的内容并显示在标准输出,功能类似于 gzip -c xx.

    zip

    zip压缩格式是Windows与Linux等多平台通用的压缩格式,和gzip命令相比,zip命令压缩文件不仅不会删除源文件,而且还可以压缩目录.

    zip的常用指令选项如下:

    基本格式: zip [option] [file]
    指令选项:
    -r   //将指定的目录下的所有文件和子目录一并压缩
    -x   //压缩文件时排除某个文件
    -q   //不显示压缩信息
    

    使用方式:

    • zip Text.zip exp.txt //将exp.txt文件压缩到Text.zip里
    • zip Tmp.zip tmp/ //将tmp/目录压缩到Tmp.zip里(这样只压缩到一个目录,目录下面的文件没有压缩)
    • zip -r TMP.zip tmp/ //将tmp/目录以及子目录,递归压缩
    tar

    前面我们已经学习了 gzip 和 bzip2 带有多个文件作为参数时,执行的操作是将各个文件独立压缩,而不是将其放在一起进行压缩.这样就无法产生类似于
    Windows环境下的文件夹打包压缩的效果.(gzip与bzip2也可以使用文件夹作为参数,使用 -f 选项,但也是将其中的每个文件独立压缩).
    为了实现打包压缩的效果,可以使用命令 tar 进行文件的打包操作,再进行压缩.tar 指令可以将文件打包成文件档案存储在磁盘/磁带中,
    打包操作一般伴随压缩操作,也可以使用 tar 指令对打包压缩后的文件解压.

    tar 常用命令参数如下:

    基本格式:tar [Options] file_archive  //注意tar的第一参数必须为命令选项,即不能直接接待处理文件
    常用命令参数:
    //指定tar进行的操作,以下三个选项不能出现在同一条命令中
    -c        //创建一个新的打包文件(archive)
    -x        //对打包文件(archive)进行解压操作
    -t        //查看打包文件(archive)的内容,主要是构成打包文件(archive)的文件名
    
    //指定支持的压缩/解压方式,操作取决于前面的参数,若为创建(-c),则进行压缩,若为解压(-x),则进行解压,不加下列参数时,则为单纯的打包操作
    -z        //使用gzip进行压缩/解压,一般使用.tar.gz后缀
    -j        //使用bzip2进行压缩/解压,一般使用.tar.bz2后缀
    
    //指定tar指令使用的文件,若没有压缩操作,则以.tar作为后缀
    -f filename   //-f后面接操作使用的文件,用空格隔开,且中间不能有其他参数,推荐放在参数集最后或单独作为参数
             //文件作用取决于前面的参数,若为创建(-c),则-f后为创建的文件的名字(路径),若为(-x/t),则-f后为待解压/查看的打包压缩文件名
    
    //其他辅助选项
    -v        //详细显示正在处理的文件名
    -C Dir      //将解压文件放置在 -C 指定的目录下
    -p(小写)     //保留文件的权限和属性,在备份文件时较有用
    -P(大写)     //保留原文件的绝对路径,即不会拿掉文件路径开始的根目录
    --exclude=file //排除不进行打包的文件
    

    常见的tar指令操作如下:

      压缩: 
     tar -cvjpf etc.tar.bz2 /etc  //-c为创建一个打包文件,相应的-f后面接创建的文件的名称,使用了.tar.bz2后缀,-j标志使用bzip2压缩,最后面为具体的操作对象/etc目录
     查看:
     tar -tjvf etc.tar.bz2     //-t为查看操作,则-f对应所查看的文件的名称,文件后缀显示使用bzip2进行压缩,所以加入-j选项,-v会显示详细的权限信息
     解压:
     tar -xjvf etc.tar.bz2     //-x为解压操作,则-f指定的是解压使用的文件,文件后缀显示使用bzip2进行压缩,所以加入-j选项,即使用bzip2解压
                       //若只解压指定打包文件中的一个文件,在上述指令的最后加上带解压文件名作为参数即可
     解压:
      tar -xzvf ect.tar.gz          //解压*.tar.gz压缩文件.
    

    unzip

    unzip 命令与之前的 tar 指令类似,具有对 zip 文件进行查看、测试和解压的功能.

    基本格式:unzip [Options] file[.zip]    //不接任何Options时,默认将指定的file文件解压至当前文件夹,可同时接受多个文件参数
    常用命令参数:
    //压缩文件内容查看
    -Z        //以形如 ls -l 的格式显示目标文件内容,实际原理是命令第一个参数为-Z时,其余参数会被视为 zipinfo 的参数,并产生对应效果  
    -Z1        //仅显示压缩文件内容的文件名,更多显示可查看 zipinfo 命令的 man 帮助
    -l        //显示压缩文件中包括时间、占用空间和文件名等信息,内容上较 -Z 更简单
    
    //文件测试
    -t        //在内存中解压文件并进行文件的完整性校验(CRC校验)
    
    //解压缩参数,注意unzip默认即为解压操作
    -f        //注意与 tar 命令不同,unzip指定 -f 参数时,则将磁盘上已经存在且内容新于对应磁盘文件的压缩内容解压出来
    -n        //解压缩时不覆盖已存在的文件(而是跳过)
    -q        //安静模式,仅解压缩而不输出详细信息
    -d dir      //将文件解压至dir指定的文件夹中
    

    可以使用unzip命令对zip文件进行相关的操作.

    • 查看压缩文件的所有文件名(注意 -Z 选项表示之后所有的参数被视为 zipinfo 的参数并输出相应结果) -> unzip -Z1 file.zip
    • 测试文件的完整性 -> unzip -t file.zip
    • 将文件解压至当前用户的主目录 -> unzip -q file.zip -d ~
    扫一扫,干货等着你来阅读

    相关文章

      网友评论

          本文标题:Linux压缩/解压缩操作

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