• Linux文件的打包与压缩


    打包命令: tar

    tar 的选项与参数非常的多!我们只讲几个常用的选项,更多选项您可以自行 man tar 查询罗!

    [root@www ~]# tar [-j|-z] [cv] [-f 创建的档名] filename... <==打包与压缩
    [root@www ~]# tar [-j|-z] [tv] [-f 创建的档名]             <==察看档名
    [root@www ~]# tar [-j|-z] [xv] [-f 创建的档名] [-C 目录]   <==解压缩
    选项与参数:
    -c  :创建打包文件,可搭配 -v 来察看过程中被打包的档名(filename)
    -t  :察看打包文件的内容含有哪些档名,重点在察看『档名』就是了;
    -x  :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
          特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。
    -j  :透过 bzip2 的支持进行压缩/解压缩:此时档名最好为 *.tar.bz2
    -z  :透过 gzip  的支持进行压缩/解压缩:此时档名最好为 *.tar.gz
    -v  :在压缩/解压缩的过程中,将正在处理的档名显示出来!
    -f filename:-f 后面要立刻接要被处理的档名!建议 -f 单独写一个选项罗!
    -C 目录    :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。
    
    其他后续练习会使用到的选项介绍:
    -p  :保留备份数据的原本权限与属性,常用於备份(-c)重要的配置档
    -P  :保留绝对路径,亦即允许备份数据中含有根目录存在之意;
    --exclude=FILE:在压缩的过程中,不要将 FILE 打包! 
    

    其实最简单的使用 tar 就只要记忆底下的方式即可:

    • 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
    • 查 询:tar -jtv -f filename.tar.bz2
    • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

    那个 filename.tar.bz2 是我们自己取的档名,tar 并不会主动的产生创建的档名喔!

    我们要自订啦! 所以扩展名就显的很重要了!如果不加 [-j|-z] 的话,档名最好取为 *.tar 即可。

    如果是 -j 选项,代表有 bzip2 的支持,因此档名最好就取为 *.tar.bz2 ,因为 bzip2 会产生 .bz2 的扩展名之故!

    至於如果是加上了 -z 的 gzip 的支持,那档名最好取为 *.tar.gz 喔!了解乎?

    另外,由於『 -f filename 』是紧接在一起的,过去很多文章常会写成『-jcvf filename』,这样是对的,

    但由於选项的顺序理论上是可以变换的,所以很多读者会误认为『-jvfc filename』也可以~事实上这样会导致产生的档名变成 c !

    因为 -fc 嘛!所以罗,建议您在学习 tar 时,将『 -f filename 』与其他选项独立出来,会比较不容易发生问题。

    ============================================================================================

                                           以上选自:鸟哥的Linux私房菜

                                           网址:http://vbird.dic.ksu.edu.tw/linux_basic/0240tarcompress_3.php

    =============================================================================================

    接下来,我实验一番。

    1.准备文件

    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt

    2.打包格式  如  filename.tar.gz   ,即打包并压缩

    root@wuheng-virtual-machine:/home/wuheng/test# tar -zcv -f test.tar.gz *.txt
    a.txt
    b.txt
    c.txt
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  test.tar.gz
    root@wuheng-virtual-machine:/home/wuheng/test#

    3.解压缩包 如 test.tar.gz 

    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  test.tar.gz
    root@wuheng-virtual-machine:/home/wuheng/test# rm -rf *.txt
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    test.tar.gz
    root@wuheng-virtual-machine:/home/wuheng/test#

    a.压缩在当前目录下面

    root@wuheng-virtual-machine:/home/wuheng/test# tar -zxv -f test.tar.gz
    a.txt
    b.txt
    c.txt
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  test.tar.gz
    root@wuheng-virtual-machine:/home/wuheng/test#

    b.压缩文件到指定目录下面

    root@wuheng-virtual-machine:/home/wuheng/test# mkdir demo
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  demo  test.tar.gz
    root@wuheng-virtual-machine:/home/wuheng/test# tree demo
    demo

    0 directories, 0 files
    root@wuheng-virtual-machine:/home/wuheng/test#

    root@wuheng-virtual-machine:/home/wuheng/test# tar -zxv -f test.tar.gz -C demo/
    a.txt
    b.txt
    c.txt
    root@wuheng-virtual-machine:/home/wuheng/test# tree demo
    demo
    ├── a.txt
    ├── b.txt
    └── c.txt

    0 directories, 3 files
    root@wuheng-virtual-machine:/home/wuheng/test#

    4.查看当前压缩包文件包含的文件信息

    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  test.tar.gz
    root@wuheng-virtual-machine:/home/wuheng/test# tar -ztv -f test.tar.gz
    -rw-r--r-- root/root        26 2016-03-22 22:33 a.txt
    -rw-r--r-- root/root       595 2016-03-22 22:36 b.txt
    -rw-r--r-- root/root        62 2016-03-22 22:36 c.txt
    root@wuheng-virtual-machine:/home/wuheng/test#


    ------------------------------------------------------------------------------------------------------

    总结,上面的例子要是是 *.tar.gz  ,还可以是 *.tar.bz2

    压缩命令  :

    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt
    root@wuheng-virtual-machine:/home/wuheng/test# tar -jcv -f demo.tar.bz2 *.txt
    a.txt
    b.txt
    c.txt
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  demo.tar.bz2
    root@wuheng-virtual-machine:/home/wuheng/test#

    查看压缩包命令

    root@wuheng-virtual-machine:/home/wuheng/test# tar -jtv -f demo.tar.bz2
    -rw-r--r-- root/root        26 2016-03-22 22:33 a.txt
    -rw-r--r-- root/root       595 2016-03-22 22:36 b.txt
    -rw-r--r-- root/root        62 2016-03-22 22:36 c.txt
    root@wuheng-virtual-machine:/home/wuheng/test#

    解压命令:

    root@wuheng-virtual-machine:/home/wuheng/test# rm -rf *.txt
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    demo.tar.bz2
    root@wuheng-virtual-machine:/home/wuheng/test#
    root@wuheng-virtual-machine:/home/wuheng/test# tar -jxv -f demo.tar.bz2
    a.txt
    b.txt
    c.txt
    root@wuheng-virtual-machine:/home/wuheng/test# ls
    a.txt  b.txt  c.txt  demo.tar.bz2
    root@wuheng-virtual-machine:/home/wuheng/test#

    当然,可以解压到指定的目录中去。如: tar -jxv -f demo.tar.bz2 -C 指定目录地址

    ---------------------------------------------------------------------------------------------------

    补充:

    • 使用 tar 加入 -j 或 -z 的参数备份 /etc/ 目录

    有事没事备份一下 /etc 这个目录是件好事!备份 /etc 最简单的方法就是使用 tar 罗!让我们来玩玩先:

    [root@www ~]# tar -zpcv -f /root/etc.tar.gz /etc
    tar: Removing leading `/' from member names  <==注意这个警告信息
    /etc/
    ....中间省略....
    /etc/esd.conf
    /etc/crontab
    # 由於加上 -v 这个选项,因此正在作用中的档名就会显示在萤幕上。
    # 如果你可以翻到第一页,会发现出现上面的错误信息!底下会讲解。
    # 至於 -p 的选项,重点在於『保留原本文件的权限与属性』之意。
    
    [root@www ~]# tar -jpcv -f /root/etc.tar.bz2 /etc
    # 显示的信息会跟上面一模一样罗!
    
    [root@www ~]# ll /root/etc*
    -rw-r--r-- 1 root root  8740252 Nov 15 23:07 /root/etc.tar.bz2
    -rw-r--r-- 1 root root 13010999 Nov 15 23:01 /root/etc.tar.gz
    [root@www ~]# du -sm /etc
    118     /etc
    # 为什么建议您使用 -j 这个选项?从上面的数值你可以知道了吧?^_^

    2016-0329补充信息

    ZIP

    zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。

    缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。闲话少说,我们步入正题吧:

    我们可以使用下列的命令压缩一个目录:

    # zip -r archive_name.zip directory_to_compress

    下面是如果解压一个zip文档:

    # unzip archive_name.zip


  • 相关阅读:
    Python基本语法_输入/输出语句详解
    集成骨骼动画Spine的几点经验
    标量 ,数组,hash 引用
    阿里RDS中插入emoji 表情插入失败的解决方案
    Target runtime Apache Tomcat v7.0 is not defined.
    销售行业ERP数据统计分析都有哪些维度?
    mysql 基于时间点恢复
    perl 闭包
    房地产企业营销分析系统建设中的关键性指标是什么?
    Python基本语法_运算符详解
  • 原文地址:https://www.cnblogs.com/wuheng1991/p/5310973.html
Copyright © 2020-2023  润新知