前言

Linux 有三个常用的压缩命令:gzipbzip2tar 。本文介绍它们的区别和简单用法。

压缩文件

数据压缩是去除数据中冗余部分的过程,需要通过压缩算法完成。这些算法可分为两类:

  • 无损压缩:保留原始文件中包含的所有数据。
  • 有损压缩:在进行压缩时删除数据,以便应用更多的压缩。当文件被恢复时,它与原始版本不一致,是一个近似值。JPEG和MP3是有损压缩的例子。

gzip命令

该命令被用来压缩一个或多个文件。它将原始文件替换为压缩版本。

该命令的语法为gzip file

我们可以使用gunzip来解压缩。

gzip有诸多选项,使用命令man gzip查看完整的列表。

如果想要查看压缩的文本文件的内容,可以使用gunzip -c 或者 zcat进行查看。

bzip2命令

该命令与gzip类似,但使用了不同的压缩算法,并以压缩速度为代价实现更高的压缩水平。

用来压缩的命令:

bzip2 sample.txt

用来解压缩的命令:

bunzip2 sample.txt.bz2

bzip2也有几个受支持的选项。

归档文件

归档是将许多文件收集起来,并将它们打包在一起成为一个大文件的过程。

tar命令

tar程序是归档文件中的经典工具。如果你看到一个以.tar为扩展名的文件名,它表示一个普通的tar归档文件,如果它以.tgz结尾,它表示一个被gzip压缩过的归档文件。

tar有几种模式。请记住,模式必须总是先被指定。

模式 描述
c 从文件和/或目录的列表中创建一个归档。
x 提取一个归档。
r 将指定的路径名,添加到归档的末尾。
t 列出归档的内容。

我已经创建了几个文件夹和文件,我可以用tar cf playground.tar playground归档它们。

我们可以使用v选项(verbose)来获得更详细的列表。

我们可以在一个新的位置提取tar。请记住,除非我们是以超级用户的身份进行操作,否则从归档中提取的文件和目录的所有权是由执行恢复的用户来承担的,而不是原始的所有者。

tar默认使用相对路径名而不是绝对路径名。这是非常有用的,因为它允许我们提取归档到任何位置,而不是必须提取到它们的原始位置。

你可以通过在tar命令中加入尾部的路径名来限制从归档文件中提取的内容,tar将只恢复指定的文件。你也可以指定多个路径名。通配符通常情况下不被支持,但GUN版本的tar通过--wildcards选项支持它们。

tar xf ../playground2.tar --wildcards 'home/azureuser/playground/dir-*/file-A'

现代版本的GNU tar分别通过使用zj选项,来直接支持gzipbzip2压缩。

T-files-from选项的缩写,它向tar指出从哪里读取它的路径名列表,以前我们告诉tar要使用的目录或文件,但现在我们使用-选项,这让tar知道要使用标准输入或输出作为要提取或归档的文件。-T选项起初有点令人困惑。这个命令是在说:

  • find playground/ -name 'file-A' 查找playground中与file-A相匹配的所有文件
  • | 将查找到的内容使用管道输出到tar
  • tar czf playground 创建一个被gzip压缩的tar,命名为playground.tgz
  • -T - 标准输出的文件,这些文件来自管道查找命令的标准输出。

Linux系列之压缩命令的更多相关文章

  1. Linux 常用的压缩命令有 gzip 和 zip

    Linux 常用的压缩命令有 gzip 和 zip,两种压缩包的结尾不同:zip 压缩的后文件是 *.zip ,而 gzip 压缩后的文件 *.gz 相应的解压缩命令则是 gunzip 和 unzip ...

  2. [转帖]Linux系列之SAR命令使用详解

    Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...

  3. linux系统常见压缩命令

    在linux环境中,压缩文件的扩展名基本是:*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2 *.Z compress程序压缩的文件 *.gz gzip程序压缩的文件 *.bz2 ...

  4. Linux 解压压缩命令

    一.概述: 1.压缩命令: 命令格式:tar  -zcvf   压缩文件名.tar.gz   被压缩文件名 可先切换到当前目录下.压缩文件名和被压缩文件名都可加入路径. 2.解压缩命令: 命令格式:t ...

  5. 【linux】打包压缩命令

    打包命令:tar\zip 压缩命令:gzip 打包文件 tar -zcvf xxx/ tar -xvf xxx.tar z的意思是通过gzip压缩 c是create是生成打包的意思,x是解包 v是压缩 ...

  6. linux下的压缩命令

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

  7. 【linux系列】压缩和解压缩tar

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...

  8. (六)Linux下的压缩命令

    ======================================================================================== .zip格式的压缩和解 ...

  9. Linux系列之压缩与解压

    1.压缩技术 1.常用命令实例 1.zip格式的压缩与解压缩 zip是压缩指令,unzip是解压指令.zip指令既可以压缩文件,也可以压缩目录.压缩会自动保留源文件,解压会自动保留压缩文件. zip  ...

随机推荐

  1. 每天一个 HTTP 状态码 200

    200 OK 话不多说,这个状态码应该是最最最常用的了,无人不知,无人不晓: 就是表示请求成功的意思,你若安好,便是晴天. 摘自对于 https://www.google.com/ GET 请求的响应 ...

  2. Base64 编码知识,一文打尽!

    现在网站为了提升用户的浏览体验越来越多的使用了图片,而这些图片通常以 Base64 的形式存储和加载.因此各位开发工程师肯定对 Base64 毫不陌生了,那么你知道 Base64 究竟是什么,为什么要 ...

  3. 使用docker搭建jupyter notebook / jupyterlab

    说明 由于官方镜像实在是不怎么好用,所以我自己做了一个优化过的jupyter notebook的镜像 notebook_hub,使用我这个镜像搭建容器非常简单,下面就基于这个notebook_hub来 ...

  4. 爬取豆瓣TOP250电影

    自己跟着视频学习的第一个爬虫小程序,里面有许多不太清楚的地方,不如怎么找到具体的电影名字的,那么多级关系,怎么以下就找到的是那个div呢? 诸如此类的,有许多,不过先做起来再说吧,后续再取去弄懂. i ...

  5. c++ 线段树

    关于线段树 线段数是一种区间树 可以看出:叶子即为输入的数 假设一个节点为 x ,则其左儿子为 2x 右儿子为 2x+1 操作解析 约定 变量名 意义 input[] 输入的数 t[] 线段树 其中 ...

  6. 国外卡组织的 交换费-interchangefee(发卡行服务费) 和 银联对比

    本文地址:https://www.cnblogs.com/hchengmx/p/15170391.html 1. 交换费(interchangefee)介绍 2. MasterCard 万事达卡 &a ...

  7. 使用Group By子句的时候,一定要记住下面的一些规则

    使用Group By子句的时候,一定要记住下面的一些规则:(1)不能Group By非标量基元类型的列,如不能Group By text,image或bit类型的列(2)Select指定的每一列都应该 ...

  8. ExtJS 布局-Center布局(Center layout)

    更新记录: 2022年6月12日 检查发布. 2022年6月1日 开始. 1.说明 center布局将子项放置在容器的中心. 2.设置布局方法 在父容器中设置 layout: 'center', // ...

  9. SRE,了解一下?35+岁程序员新选择

    摘要:随着云业务的发展,今后会有越来越多的工程师深入到SRE领域. 本文分享自华为云社区<浅谈SRE角色认知>,作者: SRE确定性运维. 一.什么是SRE? SRE(Site Relia ...

  10. JAVA面向对象之封装和调用

    一   面向对象 面向对象的三大特性   1 封装:概念:封装是把过程和数据私有化,打包封存起来,对数据访问只能通过指定的方式.简单的可以理解为你把钱存到银行里,银行专员首先要给你开一个账户,之后你的 ...