• Linux常用指令---tar | zip (解压缩)


    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。

     

    1、zip 

    zip -r myfile.zip ./*
    将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件.

     

    zip -d myfile.zip smart.txt
    删除压缩文件中smart.txt文件


        zip -m myfile.zip ./rpm_info.txt
    向压缩文件中myfile.zip中添加rpm_info.txt文件

     

        zip -r filename.zip filesdir 

    在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件。

     

         zip -r filename.zip file1 file2 file3 /usr/work/school 

    上面的命令把 file1、file2、 file3、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。

     

     

     

         2、unzip 

     

         unzip -o -d /home/sunny myfile.zip
    把myfile.zip文件解压到 /home/sunny/
    -o:不提示的情况下覆盖文件;
    -d:-d /home/sunny 指明将文件解压缩到/home/sunny目录下;

     

         unzip abc?.zip

    我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们,

    ?表示一个字符,如果用*表示任意多个字符。

     

         unzip -v large.zip

    我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么

     

         unzip -t large.zip

    查看一下这个压缩文件是否下载正确了

     

         unzip -j music.zip

    我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录

     

         3、tar 

         

         我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的 压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用。tar本身不具有压缩功能。他是调用压缩功能实现的

    必要参数有如下:

    -A 新增压缩文件到已存在的压缩

    -B 设置区块大小

    -c 建立新的压缩文件

    -d 记录文件的差别

    -r 添加文件到已经压缩的文件

    -u 添加改变了和现有的文件到已经存在的压缩文件

    -x 从压缩的文件中提取文件

    -t 显示压缩文件的内容

    -z 支持gzip解压文件

    -j 支持bzip2解压文件

    -Z 支持compress解压文件

    -v 显示操作过程

    -l 文件系统边界设置

    -k 保留原有文件不覆盖

    -m 保留文件不被覆盖

    -W 确认压缩文件的正确性

     

      实例1:将文件全部打包成tar包

    命令:

    tar -cvf log.tar log2012.log
    
    tar -zcvf log.tar.gz log2012.log
    
    tar -jcvf log.tar.bz2 log2012.log

     

    输出:

    [root@localhost test]# ls -al log2012.log
    
    ---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
    
    [root@localhost test]# tar -cvf log.tar log2012.log 
    
    log2012.log
    
    [root@localhost test]# tar -zcvf log.tar.gz log2012.log
    
    log2012.log
    
    [root@localhost test]# tar -jcvf log.tar.bz2 log2012.log 
    
    log2012.log
    
    [root@localhost test]# ls -al *.tar*
    
    -rw-r--r-- 1 root root 307200 11-29 17:54 log.tar
    
    -rw-r--r-- 1 root root   1413 11-29 17:55 log.tar.bz2
    
    -rw-r--r-- 1 root root   1413 11-29 17:54 log.tar.gz

     

     说明:

    tar -cvf log.tar log2012.log       仅打包,不压缩! 

    tar -zcvf log.tar.gz log2012.log   打包后,以 gzip 压缩 

    tar -jcvf log.tar.bz2 log2012.log  打包后,以 bzip2 压缩 

    在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。

     

        实例2:查阅上述 tar包内有哪些文件

    命令:

    tar -ztvf log.tar.gz

    输出:

    [root@localhost test]# tar -ztvf log.tar.gz

    ---xrw-r-- root/root    302108 2012-11-13 06:03:25 log2012.log

    说明:

    由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上 z 这个参数了。

     

    实例3:将tar 包解压缩

    命令:

    tar -zxvf /opt/soft/test/log.tar.gz

    输出:

    [root@localhost test3]# ll

    总计 0[root@localhost test3]# tar -zxvf /opt/soft/test/log.tar.gz

    log2012.log

    [root@localhost test3]# ls

    log2012.log

    [root@localhost test3]#

    说明:

    在预设的情况下,我们可以将压缩档在任何地方解开的

     

    实例4:只将 /tar 内的 部分文件解压出来

    命令:

    tar -zxvf /opt/soft/test/log30.tar.gz log2013.log

    输出:

    [root@localhost test]# tar -zcvf log30.tar.gz log2012.log log2013.log 
    
    log2012.log
    
    log2013.log
    
    [root@localhost test]# ls -al log30.tar.gz 
    
    -rw-r--r-- 1 root root 1512 11-30 08:19 log30.tar.gz
    
    [root@localhost test]# tar -zxvf log30.tar.gz log2013.log
    
    log2013.log
    
    [root@localhost test]# ll
    
    -rw-r--r-- 1 root root   1512 11-30 08:19 log30.tar.gz
    
    [root@localhost test]# cd test3
    
    [root@localhost test3]# tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
    
    log2013.log
    
    [root@localhost test3]# ll
    
    总计 4
    
    -rw-r--r-- 1 root root 61 11-13 06:03 log2013.log
    
    [root@localhost test3]#

     

    说明:

    我可以透过 tar -ztvf 来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件!

    实例5:文件备份下来,并且保存其权限

    命令:

    tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log 

    输出:

    [root@localhost test]# ll
    
    总计 0
    
    -rw-r--r-- 1 root root      0 11-13 06:03 log2014.log
    
    -rw-r--r-- 1 root root      0 11-13 06:06 log2015.log
    
    -rw-r--r-- 1 root root      0 11-16 14:41 log2016.log
    
    [root@localhost test]# tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log 
    
    log2014.log
    
    log2015.log
    
    log2016.log
    
    [root@localhost test]# cd test6
    
    [root@localhost test6]# ll
    
    [root@localhost test6]# tar -zxvpf /opt/soft/test/log31.tar.gz 
    
    log2014.log
    
    log2015.log
    
    log2016.log
    
    [root@localhost test6]# ll
    
    总计 0
    
    -rw-r--r-- 1 root root 0 11-13 06:03 log2014.log
    
    -rw-r--r-- 1 root root 0 11-13 06:06 log2015.log
    
    -rw-r--r-- 1 root root 0 11-16 14:41 log2016.log
    
    [root@localhost test6]#

     

    说明:

    这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时

     

    实例6:在 文件夹当中,比某个日期新的文件才备份

    命令:

    tar -N "2012/11/13" -zcvf log17.tar.gz test

    输出:

    [root@localhost soft]# tar -N "2012/11/13" -zcvf log17.tar.gz test
    
    tar: Treating date `2012/11/13' as 2012-11-13 00:00:00 + 0 nanoseconds
    
    test/test/log31.tar.gz
    
    test/log2014.log
    
    test/linklog.log
    
    test/log2015.log
    
    test/log2013.log
    
    test/log2012.log
    
    test/log2017.log
    
    test/log2016.log
    
    test/log30.tar.gz
    
    test/log.tar
    
    test/log.tar.bz2
    
    test/log.tar.gz

     

    说明:

    实例7:备份文件夹内容是排除部分文件

    命令:

    tar --exclude scf/service -zcvf scf.tar.gz scf/*

    输出:

    [root@localhost test]# tree scf

    scf

    |-- bin

    |-- doc

    |-- lib

    `-- service

         `-- deploy

              |-- info

              `-- product

    7 directories, 0 files

    [root@localhost test]# tar --exclude scf/service -zcvf scf.tar.gz scf/* 

    scf/bin/

    scf/doc/

    scf/lib/

    [root@localhost test]#

     

    参考:

     

    Linux下的压缩解压缩命令详解

     

  • 相关阅读:
    PHP microtime() 函数
    PHP localtime() 函数
    PHP idate() 函数
    PHP gmstrftime() 函数
    Orchestrator安装
    [BJOI2017]开车
    cant found Microsoft.VSSDK.BuildTools.15.0.26201
    如何移动 nuget 缓存文件夹
    如何移动 nuget 缓存文件夹
    如何移动 nuget 缓存文件夹
  • 原文地址:https://www.cnblogs.com/ITtangtang/p/3950481.html
Copyright © 2020-2023  润新知