• Linux下打包、压缩和解压


    命令使用:tar  主选项+辅选项  压缩后文件名  要压缩的文件

    -c 建立压缩文件(常用)

    -x 解压(常用)

    -t 查看压缩文件(常用)

    -r 向压缩文件末尾追加文件

    -u 更新一个压缩包中的文件

    上述五个参数是主选项,是互斥的(只能出现其中的一个),所有的归档操作都需要用到其中的一个,可以和辅选项连用:

    -z 使用gzip压缩

    -j 使用bz2压缩

    -J 使用xz压缩

    -Z 使用compress压缩(compress,已被bzip代替)

    -v 显示过程

    -w 每压缩一个文件都需要确认(不常用)

    -O 解开到标准输出STDOUT(不常用)

    -f 指定压缩包名,切记!这个参数最后出现,后面接压缩包名,也是必选参数

    # tar -cf all.tar *.jpg

    这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

    # tar -rf all.tar *.gif

    这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

    # tar -uf all.tar logo.gif

    这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

    # tar -tf all.tar

    这条命令是列出all.tar包中所有文件,-t是列出文件的意思

    # tar -xf all.tar

    这条命令是解出all.tar包中所有文件,-t是解开的意思,如果需要解压到特定目录加-C参数,tar -xf all.tar -C dirname

    3种压缩方式:

    压缩方式

    参数

    特性

    gzip

    z

    .gz早期的压缩方式,压缩性能小,但是快

    bzip2

    j

    .bz2中期的压缩方式,压缩能力中

    xz

    J

    .xz现在常用的压缩方式,压缩能力强,速度慢

    PS:使用什么方式压缩,解压时也必须使用此方式!

    # tar    -czvf    /mnt/etc.tar.gz    /etc   

     //对/etc文件夹使用gzip方式进行压缩,压缩后存放为/mnt/etc.tar.gz

    # tar    -cjvf    /mnt/etc.tar.bz2    /etc  

     //对/etc文件夹使用bzip2方式进行压缩,压缩后存放为/mnt/etc.tar.bz2

    # tar    -cJvf    /mnt/etcz.tar.xz   /etc   

     //对/etc文件夹使用xz方式进行压缩,压缩后存放为/mnt/etcz.tar.xc

    # tar    -xzvf    /mnt/etc.tar.gz   -C   /liu   

    //对/mnt/etc.tar.gz进行解压,如果想指定解压后的文件存放位置,需要-C参数来指定   

    # tar    -xjvf    /mnt/etc.tar.bz2   -C   /liu   

    //对/mnt/etc.tar.bz2进行解压,如果想指定解压后的文件存放位置,需要-C参数来指定

    # tar    -xJvf   /mnt/etcz.tar.xz   -C   /liu   

    //对/mnt/etcz.tar.xz进行解压,如果想指定解压后的文件存放位置,需要-C参数来指定

    简单的说一下打包(打包文件,归档文件)和压缩(压缩文件,压缩包文件,压缩包),打包是把一堆文件或一个目录(文件夹)合成一个文件,压缩是把一个文件通过某种算法将其占用容量变小。

    tar是打包命令,gzip等是压缩命令。

    tar -cf file file1 file2 file3把三个文件打包成一个文件file

    tar -cf file dir把dir目录打包成一个文件file

    tar -xf file解压打包文件

    tar -czf file file1 file2 file3把三个文件先打包成一个文件,然后调用gzip压缩

    tar -xzf file解压经过gzip压缩的打包文件

    gzip压缩程序:(gzip -h显示帮助)

    gzip s1s1文件使用gzip方式压缩(s1.gz),并替换原文件(s1

    gzip -c s1 > s1.gzs1文件压缩,并另存为s1.gz

    gzip -d s1.gzs1.gz解压,并替换原文件

    gzip -dc s1.gz > s1s1.gz解压,并另存为s1

    gzip -v s1显示压缩过程

    gzip -t s1.gz检查压缩文件的完整性

    gzip -l s1.gz显示压缩文件s1的压缩后大小 未压缩大小 压缩比 未压缩前的名字

    gzip -5 -c s1 > s1.gz以压缩比5-num可选值为1~91是最快压缩,等价于--fast9是最高压缩,等价于--best)将s1文件压缩并另存为s1.gz

    zcat 压缩包名,不解压在STDOUT显示压缩文件的内容

    PS:出现gzip:unknown suffix --ignored,说明欲解压的文件未带gz后缀。(使用mv重命名即可解决或gzip -d -c 未带gz后缀的压缩文件 > 解压后的名字)

    bzip2压缩程序:(bzip2 -h显示帮助)

    bzip2 s1s1使用bzip2方式压缩(s1.bz2),并替换原文件(s1)

    bzip2 -k s1同上,但是保留原文件

    bzip2 -c s1 > s1.bz2同上

    bzip2 -t s1.bz2测试压缩包完整性

    bzip -kv s1压缩时显示执行过程,需要更详细的过程,指定两次该参数,bzip -kvv s1

    bzip -d s1.bz2解压缩,并替换原文件

    bzip -dk s1.bz2同上,但是保留原文件

    bzip -dc s1.bz2>s1同上

    bzip -5 -k s1-numgzip

    PSbzip -k -c s1>s1_stdout.bz2,这时-k参数失效,只会出现s1_stdout.bz2压缩包

    出现bzip2:can’t guess original name for XXX -- using XXX.out,意思是解压时提供的压缩包没有bz2后缀,bzip2程序尝试以bzip2解压,并把解压出的文件添上out后缀

    bzcatzcat作用一样

    xz压缩程序:(xz -h显示帮助)

    类似bzip2

    UNIX-like的软件都遵循这个标准:一个工具只做一件事情,所以在linux上打包和压缩是两个独立的概念,上述讲到的压缩程序gzip bzip2 xz都只能压缩一个文件,不能压缩目录,要压缩目录需要先通过tar程序打包。

  • 相关阅读:
    git命令总结
    Junit
    zookeeper--概述
    NIO与Socket
    分区分表
    ThreadLocal
    垃圾收集器
    垃圾收集算法
    主从复制
    Redis--集群
  • 原文地址:https://www.cnblogs.com/ryzz/p/10700829.html
Copyright © 2020-2023  润新知