https://www.cnblogs.com/joshua317/p/6170839.html

常用的格式有:
tar, tar.gz(tgz), tar.bz2,

不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大。

1. tar
只是打包动作,相当于归档处理,不做压缩;解压也一样,只是把归档文件释放出来。

(1)打包归档格式:

  1. tar -cvf examples.tar files|dir
  2. #说明:
  3. -c, --create create a new archive 创建一个归档文件
  4. -v, --verbose verbosely list files processed 显示创建归档文件的进程
  5. -f, --file=ARCHIVE use archive file or device ARCHIVE 后面要立刻接被处理的档案名,比如--file=examples.tar
  6.  
  7. #举例:
  8. tar -cvf file.tar file1 #file1文件
  9. tar -cvf file.tar file1 file2 #file1,file2文件
  10. tar -cvf file.tar dir #dir目录

(2)释放解压格式:

  1. tar -xvf examples.tar (解压至当前目录下)
  2. tar -xvf examples.tar -C /path (/path 解压至其它路径)
  3.  
  4. #说明:
  5. -x, --extract, extract files from an archive 从一个归档文件中提取文件
  6.  
  7. #举例:
  8. tar -xvf file.tar
  9. tar -xvf file.tar -C /temp #解压到temp目录下

2. tar.gz tgz (tar.gz和tgz只是两种不同的书写方式,后者是一种简化书写,等同处理)
这种格式是Linux下使用非常普遍的一种压缩方式,
兼顾了压缩时间(耗费CPU)和压缩空间(压缩比率)
其实这是对tar包进行gzip算法的压缩

(1)打包压缩格式:

  1. tar -zcvf examples.tgz examples (examples当前执行路径下的目录)
  2.  
  3. 说明:
  4. -z, --gzip filter the archive through gzip 通过gzip压缩的形式对文件进行归档
  5.  
  6. 举例:
  7. tar -zcvf file.tgz dir #dir目录

(2)释放解压格式:

  1. tar -zxvf examples.tar (解压至当前执行目录下)
  2. tar -zxvf examples.tar -C /path (/path 解压至其它路径)
  3.  
  4. 举例:
  5. tar -zcvf file.tgz
  6. tar -zcvf file.tgz -C /temp

3 tar.bz

Linux下压缩比率较tgz大,即压缩后占用更小的空间,使得压缩包看起来更小。
但同时在压缩,解压的过程却是非常耗费CPU时间。

(1)打包压缩格式:

  1. tar -jcvf examples.tar.bz2 examples (examples为当前执行路径下的目录)
  2.  
  3. 说明:
  4. -j, --bzip2 filter the archive through bzip2 通过bzip2压缩的形式对文件进行归档
  5.  
  6. 举例:
  7. tar -jcvf file.tar.bz2 dir #dir目录

(2)释放解压:

  1. tar -jxvf examples.tar.bz2 (解压至当前执行目录下)
  2. tar -jxvf examples.tar.bz2 -C /path (/path 解压至其它路径)
  3.  
  4. 举例:
  5. tar -jxvf file.tar.bz2
  6. tar -jxvf file.tar.bz2 -C /temp

4 gz
压缩:
gzip -d examples.gz examples

解压:
gunzip examples.gz

5 zip
zip 格式是开放且免费的,所以广泛使用在 Windows、Linux、MacOS 平台,要说 zip 有什么缺点的话,就是它的压缩率并不是很高,不如 rar及 tar.gz 等格式。
压缩:
zip -r examples.zip examples (examples为目录)

解压:
zip examples.zip

6 .rar
压缩:
rar -a examples.rar examples

解压:
rar -x examples.rar

压缩比率,占用时间对比

为了保证能够让压缩比率较为明显,需选取一个内容较多、占用空间较大的目录作为本次实验的测试。
找了一个大概有23G的目录来测试,首先要明确由于执行环境的变化,误差在所难免

首先明确一个概念:
压缩比率=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小

.tar

  1. 打包:
  2. time tar -cvf test.tar /usr/test
  3. 时间:
  4. real 3m20.709s
  5. user 0m3.477s
  6. sys 0m42.595s
  7.  
  8. 大小:
  9. 打包前:23214680
  10. 打包后:22202984
  11.  
  12. 耗时:3m20.709s
  13. 压缩比率:22202984/23214680
  14.  
  15. 解压:
  16. time tar -xvf test.tar
  17.  
  18. 大小:
  19. 解压前:22202984
  20. 解压后:23211064
  21.  
  22. 耗时:
  23. real 2m47.548s
  24. user 0m4.999s
  25. sys 1m14.186s

.tgz

  1. 打包压缩:
  2. time tar -zcvf test.tgz /usr/test
  3. 时间:
  4. real 16m30.767s
  5. user 16m1.394s
  6. sys 1m7.391s
  7.  
  8. 大小:
  9. 打包前:23211064
  10. 打包后:18949032
  11.  
  12. 耗时:
  13. 压缩比率:
  14.  
  15. 解压:
  16. tar -zxvf test.tar
  17.  
  18. 大小:
  19. 解压前:18949032
  20. 解压后:23211064
  21.  
  22. 耗时:
  23. real 3m52.418s
  24. user 2m46.325s
  25. sys 1m21.442s

.tar.bz2

  1. 打包压缩:
  2. time tar -jcvf test.tar.bz2 /usr/test
  3.  
  4. 时间:
  5. real 80m39.422s
  6. user 80m14.599s
  7. sys 0m58.623s
  8.  
  9. 大小:
  10. 打包前:23211064
  11. 打包后:18728904
  12.  
  13. 耗时:80m39.422s
  14. 压缩比率:
  15.  
  16. 解压:
  17. time tar -jxvf test.tar.bz2
  18.  
  19. 时间:
  20. real 27m54.525s
  21. user 27m44.108s
  22. sys 1m43.645s
  23.  
  24. 大小:
  25. 解压前:18728904
  26. 解压后:23211064

综上结果,初步结论:

综合起来,在压缩比率上: tar.bz2>tgz>tar
占用空间与压缩比率成反比: tar.bz2<tgz<tar
耗费时间(打包,解压)
打包:tar.bz2>tgz>tar
解压: tar.bz2>tar>tgz
从效率角度来说,当然是耗费时间越短越好

因此,Linux下对于占用空间与耗费时间的折衷多选用tgz格式,不仅压缩率较高,而且打包、解压的时间都较为快速,是较为理想的选择。

结论:

再一次印证了物理空间与时间的矛盾(想占用更小的空间,得到高压缩比率,肯定要牺牲较长的时间;反之,如果时间较为宝贵,要求快速,那么所得的压缩比率一定较小,当然会占用更大的空间了)。

【转】Linux下常用压缩 解压命令和压缩比率对比的更多相关文章

  1. 浅谈Linux下各种压缩 解压命令和压缩比率对比

    Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...

  2. Linux下常用压缩 解压命令和压缩比率对比

    常用的格式有:tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar只是打包动作,相当于归档处理,不做压缩:解压也一样,只 ...

  3. Linux下常用压缩 解压命令与压缩比率对比

    常用的格式有:tar, tar.gz(tgz), tar.bz2, 不同方式,压缩和解压方式所耗CPU时间和压缩比率也差异也比较大. 1. tar只是打包动作,相当于归档处理,不做压缩:解压也一样,只 ...

  4. linux下的文件解压命令

    说一下tar命令的参数含义:z,使用gzip解压,x:extract解压,v:显示详细信息,f:使用归档在当前文件夹. 在解压时出现了解压失败,原因是没有sudo,无法创建文件夹.

  5. Linux常用命令——压缩解压命令

    Linux常用命令——压缩解压命令 Linux  gzip 描述:压缩文件 语法:gzip [文件名] 压缩后文件格式:.gz gunzip 描述:解压后缀为.gz的文件 语法:gunzip [文件名 ...

  6. Linux常用命令6 压缩解压命令

    .zip是Linux和Windows共有的压缩格式 1.压缩解压命令:gzip 命令英文原意:GNU zip   命令所在路径:/bin/gzip 执行权限:所有用户 语法: gzip [文件]   ...

  7. linux笔记:linux常用命令-压缩解压命令

    压缩解压命令:gzip(压缩文件,不保留原文件.这个命令不能压缩目录) 压缩解压命令:gunzip(解压.gz的压缩文件) 压缩解压命令:tar(打包压缩目录或者解压压缩文件.打包的意思是把目录打包成 ...

  8. linux中tar及压缩解压命令用法

    把常用的tar解压命令总结下,当作备忘: tar 命令可以为Linux的文件和目录创建档案.利用 tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向 档案中加入新的文件.t ...

  9. tar.xz如何解压:linux和windows下tar.xz解压命令介绍

    在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz  //先解压xz # ...

随机推荐

  1. cadence 16.3 安装教程

    http://wenku.baidu.com/link?url=mGICX2QxuxVcYGNEaOIUOK1t0LQFN4m8cp_bJF0XmvZp0TLn8OoMxjmXa-8mTa0_V0YV ...

  2. Jira内存调整

    java的metaspce怎么调大 元空间虚拟机控制元空间的增长.但是有些时候我们想限制其增长,比如通过显式在命令行中设置-XX:MaxMetaspaceSize.默认情况下,-XX:MaxMetas ...

  3. python set集合(16)

    在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值bool / 列表list / 字典dict 之外,还有一个类型我们还没有做详细介绍,这个变量类型就是集合set. ...

  4. S1. Android 功能大全

    [概述] 这篇文章主要描述安卓开发中可能实现的功能点. [准备工作] IDE:Android Studio,简单操作 如何创建一个 Android 项目 Android 项目结构分析 Androidm ...

  5. RESTful接口开发规范

    最近在研究restful,公司开发要使用,所以自己就去网上找了好些资料,并整理了一套公司开发的接口规范.当然,我也只是刚刚入坑.还不是很全面.但是这就是一个过程.一点点,总会好起来的.以下是就是RES ...

  6. keras损失函数详解

    以下信息均来自官网 ------------------------------------------------------------------------------------------ ...

  7. SAS学习笔记21 散点图、条形图

  8. (十三)Activitivi5之流程控制网关:并行

    一.概念 所谓排他网关 顾名思义 执行到该网关,会有多条线路同时并行执行,当都执行完才继续执行后面的: 二. 案例 此时当“学生请假”任务节点完成之后,如下图此时有两个任务,必须等到两个任务都完成才会 ...

  9. (七)lucene之中文检索和高亮显示以及摘要

    前提:本章节使用lucene5.3.0版本,luke也是此版本的. 1.1  生成索引 package com.shyroke.lucene; import java.io.IOException; ...

  10. Mysql的实现原理

    上篇文章已经简单介绍了Mysql索引的基本介绍,这篇文章主要讲解一下所以的实现原理.索引的定义其实非常复杂,严格的定义需要用到关系代数的概念,不在咱们讨论范围内,这里咱们只讨论mysql的常用的引擎的 ...