对于tar包、压缩包等相关概念的深入解释

  • tar 命令用来打包
  • gzip、bzip命令用来压缩、解压缩

起初tar命令并不具备压缩功能,其仅仅是个打包工具,因为有的时候目录文件是不可以在某些地方进行传输的,所以需要打包成一个包文件,还有一个原因就是,目录文件是不可以直接进行压缩的,所以需要先打包一下
后来因为传输需要进行压缩,这样一来能快速传输,二来可以节省空间,所以可以使用压缩工具对包进行压缩,产生以.gz.bz2结尾的压缩文件
至此相当于经历了打包和压缩两个步骤,但是实际应用中,总是分两步来做就显得有些麻烦,于是tar命令有了参数可以使用,这些参数有:

参数 作用
-c(小写) 创建压缩文件
-x 解开压缩文件
-t 查看压缩包内有哪些文件
-z 用Gzip格式压缩或者解压
-j(小写) 用bzip2格式压缩或者解压
-J(大写) 用xz格式进行压缩或者解压
-v 显示压缩或者解压的过程
-f 目标文件名
-p(小写) 保留原始的权限与属性
-P(大写) 使用绝对路径来压缩
-C(大写) 指定解压到的目录

其中需要额外解释的是,-v参数一般情况下最好加一下,因为有时候,执行压缩或者解压缩操作时,可能需要花费比较长的时间,如果屏幕一直没有输出,一方面不好判断进度情况,另一方面也会怀疑电脑是不是死机了。
-f参数也很重要,必须放在参数的最后一位,代表要压缩或者解压到哪个指定的目录

下面前后对比一下tar命令有了参数前后的变化
1、首先是没有用tar的压缩参数:

#mermaid-svg-ztMOSEihwP9hcyuX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ztMOSEihwP9hcyuX .error-icon{fill:#552222;}#mermaid-svg-ztMOSEihwP9hcyuX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ztMOSEihwP9hcyuX .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ztMOSEihwP9hcyuX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ztMOSEihwP9hcyuX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ztMOSEihwP9hcyuX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ztMOSEihwP9hcyuX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ztMOSEihwP9hcyuX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ztMOSEihwP9hcyuX .marker.cross{stroke:#333333;}#mermaid-svg-ztMOSEihwP9hcyuX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ztMOSEihwP9hcyuX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ztMOSEihwP9hcyuX .cluster-label text{fill:#333;}#mermaid-svg-ztMOSEihwP9hcyuX .cluster-label span{color:#333;}#mermaid-svg-ztMOSEihwP9hcyuX .label text,#mermaid-svg-ztMOSEihwP9hcyuX span{fill:#333;color:#333;}#mermaid-svg-ztMOSEihwP9hcyuX .node rect,#mermaid-svg-ztMOSEihwP9hcyuX .node circle,#mermaid-svg-ztMOSEihwP9hcyuX .node ellipse,#mermaid-svg-ztMOSEihwP9hcyuX .node polygon,#mermaid-svg-ztMOSEihwP9hcyuX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ztMOSEihwP9hcyuX .node .label{text-align:center;}#mermaid-svg-ztMOSEihwP9hcyuX .node.clickable{cursor:pointer;}#mermaid-svg-ztMOSEihwP9hcyuX .arrowheadPath{fill:#333333;}#mermaid-svg-ztMOSEihwP9hcyuX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ztMOSEihwP9hcyuX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ztMOSEihwP9hcyuX .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ztMOSEihwP9hcyuX .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ztMOSEihwP9hcyuX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ztMOSEihwP9hcyuX .cluster text{fill:#333;}#mermaid-svg-ztMOSEihwP9hcyuX .cluster span{color:#333;}#mermaid-svg-ztMOSEihwP9hcyuX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ztMOSEihwP9hcyuX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

tar命令
gzip命令
bzip2命令
xx
xx.tar
xx.tar
xx.tar.gz
xx.tar
xx.tar.bz2

根据上述流程,可以看到主要分成了两步,第一步是tar命令打包成包文件,第二部是进行压缩(有.gz和.bz2两种格式可以选择)
2、因为tar命令有参数,加了参数后就可以直接打包压缩:

#mermaid-svg-kLUx6zURihyfzLIG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kLUx6zURihyfzLIG .error-icon{fill:#552222;}#mermaid-svg-kLUx6zURihyfzLIG .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kLUx6zURihyfzLIG .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-kLUx6zURihyfzLIG .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kLUx6zURihyfzLIG .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kLUx6zURihyfzLIG .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kLUx6zURihyfzLIG .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kLUx6zURihyfzLIG .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kLUx6zURihyfzLIG .marker.cross{stroke:#333333;}#mermaid-svg-kLUx6zURihyfzLIG svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kLUx6zURihyfzLIG .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-kLUx6zURihyfzLIG .cluster-label text{fill:#333;}#mermaid-svg-kLUx6zURihyfzLIG .cluster-label span{color:#333;}#mermaid-svg-kLUx6zURihyfzLIG .label text,#mermaid-svg-kLUx6zURihyfzLIG span{fill:#333;color:#333;}#mermaid-svg-kLUx6zURihyfzLIG .node rect,#mermaid-svg-kLUx6zURihyfzLIG .node circle,#mermaid-svg-kLUx6zURihyfzLIG .node ellipse,#mermaid-svg-kLUx6zURihyfzLIG .node polygon,#mermaid-svg-kLUx6zURihyfzLIG .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kLUx6zURihyfzLIG .node .label{text-align:center;}#mermaid-svg-kLUx6zURihyfzLIG .node.clickable{cursor:pointer;}#mermaid-svg-kLUx6zURihyfzLIG .arrowheadPath{fill:#333333;}#mermaid-svg-kLUx6zURihyfzLIG .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kLUx6zURihyfzLIG .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kLUx6zURihyfzLIG .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-kLUx6zURihyfzLIG .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-kLUx6zURihyfzLIG .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kLUx6zURihyfzLIG .cluster text{fill:#333;}#mermaid-svg-kLUx6zURihyfzLIG .cluster span{color:#333;}#mermaid-svg-kLUx6zURihyfzLIG div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kLUx6zURihyfzLIG :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

tar加-z参数
tar加-j参数
xx.tar
xx.tar.gz
xx.tar
xx.tar.bz2

显而易见,第二种方式比较方便,可以将打包与压缩合并一起进行,只需要在使用tar命令时选择适当参数即可

一般地可以这样使用

[root@localhost ~]# tar -czvf  etc.tar.gz  /etc/        #将/etc/下的文件以Gzip格式压缩,压缩过程进行显示,压缩后名字为etc.tar.gz
#此命令压缩之后的etc.tar.gz文件被保存在当前目录下[root@localhost ~]# tar -cjvf  etc.tar.bz2  /etc/        #将/etc/下的文件以bzip2格式压缩,压缩过程进行显示,压缩后名字文etc.tar.bz2
#压缩后的etc.tar.bz2文件被保存在当前目录下[root@localhost ~]# tar -xzvf  etc.tar.gz  -C  /root/etc        #将etc.tar.gz文件以Gzip格式解压,解压过程进行显示,解压到/root/etc下[root@localhost ~]# tar -xjvf  etc.tar.bz2  -C  /root/etc      #将etc.tar.bz2文件以bzip2格式解压,解压过程进行显示,解压到/root/etc下

总结:
tar打包和(Gzip、bz2)压缩实际上根本没有半毛钱关系,只是tar命令顺带帮你提供了压缩、解压的参数而已

  • 需要注意的是:
    假如有一个文件名为xxx.gz,根据后缀可以判断出来,其并不是由tar包进行压缩得来的包压缩文件,而是直接由一个不是文件夹(目录)的文件直接压缩得到的普通压缩文件,所以这个时候对其进行解压,不应使用tar -xzvf,而是使用gunzip解压
    xxx.bz2的文件也是同样的道理,对其进行解压不应使用tar -xjvf,而是使用bunzip2进行解压

  • 另外需要注意的还有:
    单纯就压缩与解压而言,除了Gzip–>.gz、bz2–>.bz2的方式进行压缩之外,还有zip–>.zip的压缩方式,同时这种压缩格式也经常出现在windows平台上

其他的压缩与解压方式、格式还有很多,不一一列举,仅举以上常用的格式,相信这个对于tar包和压缩的深入理解,会利于快速掌握对应的命令,否则死记硬背很容易忘记

–>有助于理解压缩包解压工具,建议收藏<–

深入理解tar包的压缩与解压相关推荐

  1. linux命令:tar(打包、压缩、解压)

    一.tar命令语法 1.命令格式 tar[必要参数][选择参数][文件] 2.命令功能 用来压缩和解压文件.tar本身不具有压缩功能.他是调用压缩功能实现的. 3.命令参数 (1) 必要参数: 参数 ...

  2. Java Jar包的压缩、解压使用指南

    转载自 Java Jar包的压缩.解压使用指南 什么是jar包 JAR(Java Archive)是Java的归档文件,它是一种与平台无关的文件格式,它允许将许多文件组合成一个压缩文件. 如何打/解包 ...

  3. tar命令 文件压缩与解压

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar最初被用来在磁带上创建档案,现在,用户可以在 ...

  4. linux tar (打包、压缩、解压)命令

    打包程序:tar c:   创建文档 t: 列出存档内容 x:提取存档 f: filename 要操作的文档名 v:详细信息 一:打包 打包:是指把文件整合在一起,不压缩 1.将文件打包:tar cf ...

  5. linux 解压rar密码,linux下rar包的压缩与解压方案

    方法一: yum install unrar 方法二: 下载地址: 以最新的为准.对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们: 1:对于.zip linux ...

  6. python tar.gz格式压缩、解压

    压缩 代码 import tarfile import os def tar(fname):t = tarfile.open(fname + ".tar.gz", "w: ...

  7. linux tar打包、压缩、解压到指定目录

    1.前言 运维工作中经常需要压缩传输文件,常用的有zip.unzip和tar,本篇讲解一下常用的tar命令 2.代码实现 tar参数: -c :create 建立压缩档案的参数: -x : 解压缩压缩 ...

  8. Linux 下zip包的压缩与解压

    linux zip 命令详解  功能说明:压缩文件.  语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符 ...

  9. linux 压缩文件解压到到指定的目录

    工作中经常碰到把一个压缩文件解压到指定的目录下面,例如把/home/ybj/Desktop目录下的 httpd-2.2.15.tar.gz 这个压缩文件解压到 /home/ybj 这里:tar zxv ...

最新文章

  1. 15个热门的编程趋势及15个逐步走向衰落的编程方向
  2. 深入理解Linux内核之主调度器
  3. 设置成员操作符--inside
  4. 上半年全国游戏市场销售收入近1400亿元 用户规模近6.6亿人
  5. mysql查询id为5的数据类型_MySql学习05---数据类型
  6. 窗口设置的一般操作方法
  7. 机器学习基石——作业2解答
  8. 电脑打开控制面板不显示内容
  9. html中span怎么写,html的span标签怎么使用
  10. 笔记本软件兼容性测试,Windows 10 技术预览版 国产杀毒软件兼容性测试:大多可以使用...
  11. Three.js盖房子 点击开关门
  12. 深锐观察:科比已无法超越乔丹 湖人飞侠被谁打败
  13. 精心收集的几十个ASP编程网址
  14. 数据库保存时间为什么用long最好
  15. uint_32定义的说明
  16. 常用User-Agent大全
  17. Android性能优化之使用线程池处理异步任务
  18. 无孔不入的广告,亦是恶龙的化身
  19. BAT命令常用API
  20. 【ZYNQ】黑金教程_OV5640加LCD显示实验的Bug分享

热门文章

  1. 扇形面积公式如何推导?
  2. 修复outlook 收件箱
  3. 如何手写一个简单的RPC框架
  4. DirectDraw与DirectInput游戏编程体验
  5. html 初始化时请求网络,useRequest-蚂蚁中台标准请求 Hooks
  6. 智能运营:有效触达,驱动用户生命周期价值升级
  7. 大佬们,球球了帮忙看一下我这个蓝屏问题到底怎么回事吧
  8. [转]Markdown 语法说明 (简体中文版)
  9. solr全文检索入门
  10. 我的 IDEA 常用插件介绍