avatar

一条在知识海洋的咸鱼

这个家伙很懒,啥也没有留下😋

  • 首页
  • Linux
  • OCJP
  • Java核心技术卷
  • J2EE相关标准
  • 深入理解Java虚拟机
  • NIO与SOcket编程技术指南
  • Java多线程编程核心技术
  • Redis开发与运维
  • Spring Cloud Alibaba 微服务原理与实践
  • DevOps
  • Docker
  • MySQL必知必会
  • AI自学路线
  • Spring Boot 编程思想(核心篇)
主页 文件与文件系统的压缩
文章

文件与文件系统的压缩

发表于 2020-12-19 更新于 2026-06- 10
作者 Administrator
18~24 分钟 阅读
  • 压缩文件的用途与技术
  • Linux系统常见的压缩命令
    • gzip,zcat/zmore/zless、zgrep
      • gzip
      • gzip -d 解压
    • bzip2,zcat/zmore/zless、zgrep
    • xz,zcat/zmore/zless、zgrep
  • 打包命令:tar
    • tar
      • 总结
      • 使用tar 加入-z、-j或-J的参数备份/etc/ 目录
      • 查看tar文件的数据内容(可查看文件名),与备份文件名有否根目录的意义
      • 将备份的数据解压缩,并考虑特定目录的解压缩操作(-C 选项的应用)
      • 仅解开单一文件的方法
      • 打包某目录,但不包含改目录下的某些文件
      • 仅备份比某个时刻还要新的文件
      • 基本名称:tarfile、tarball
  • XFS文件系统的备份与还原
  • 其他常见的压缩与备份工具

在Linux下面,扩展名没有什么特殊的意义。但是针对这些压缩命令所产生的压缩文件,为了方便记忆,会有一些特殊的命名方式

压缩文件的用途与技术

比较大型的文件通过文件压缩技术后,可以将它的磁盘使用量降低,从而达到降低文件容量的效果。此外有的压缩程序还可以机型容量限制,使一个大型文件可以划分为数个小型文件,以方便携带
压缩的原理:
1.计算机系统以字节Byte单位来计量,但计算机最小计量单位为bit来计量,1B=8bit。有的字节可能含有空的bit。将此空位置“丢出来”,让文件占用的空间变小
2.将重复的数据进行统计记录,例如数据为[111......]共有100个1时,可以记录为[100个1]而不是真的由100个1的位存在,可以精简文件记录的容量
压缩后的文件并无法直接被系统使用,必须将它还原回未压缩的文件

Linux系统常见的压缩命令

压缩文件的扩展名大多是:.tar、.tar.gz、.tgz、.gz、.Z、.bz2、*.xz
扩展名的意义:压缩命令非常多,且不同的命令所用的压缩技术并不相同,无法互通压缩/解压缩文件。Linux文件的属性基本上是与文件名没有关系,但为了方便使用者记忆,所以有不同的扩展名
各个扩展名对应压缩软件

  • *.z:comparess程序压缩的文件
  • *.zip:zip
  • *.gz:gzip
  • *.bz2:bzip2
  • *.xz:xz
  • *.tar:tar程序打包的文件,并没有压缩过
  • *.tar.gz:tar程序打包的文件,并且经过gzip的压缩
  • *.tar.bz2:tar程序打包的文件,并且经过bzip2的压缩
  • *.tar.xz:tar程序打包的文件,并且经过xz的压缩
    总结:
    压缩:最常见的压缩命令为gzip、bzip2、xz。但其只能压缩单个文件,不能同时压缩多个。
    打包:tar可以将多个文件打包为一个文件,甚至是目录。但其只能打包,并不能压缩。后来GUN计划中,将整个tar与压缩功能结合在一起

gzip,zcat/zmore/zless、zgrep

gzip

gzip是使用最广的压缩命令,可以解开compress、zip与gzip等软件压缩的文件
gzip [-cdtv#] 文件名
zcat 文件名.gz
选项与参数:

  • -c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理
  • -d:解压缩的参数
  • -t:可以用来检验一个压缩文件的一致性,看看文件有无错误
  • -v:可以显示出原文件/压缩文件的压缩比等信息
  • -#:#为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6
    image.png
    使用gzip压缩时,在默认的状态下原本的文件会被压缩成为.gz后缀的文件,源文件就不存在会被删除,且*.gz文件可以在Windows被解压缩

gzip -d 解压

gzip -d将原本的.gz删除,恢复到原本的文件
image.png
想让从文字压缩文件当中查找数据的话,可以通过zgrep来查找关键词,不需要将压缩文件解开才以grep进行
image.png

bzip2,zcat/zmore/zless、zgrep

bzip2时为了替换gzip,并提供更佳的压缩比
bzip2 [-cdkzc#] 文件名
bzcat 文件名 .bz2
选项与参数:

  • -c:将压缩的过程产生的数据输出到屏幕上
  • -d:解压缩的参数
  • -k:保留原始文件
  • -z:压缩的参数(默认值,可以不加)
  • -v:可以显示出源文件/压缩文件的压缩比等信息
  • -#:与gzip同样的,都是计算压缩比的参数,-9最佳,-1最快
    image.png
    gzip和bzip2的压缩率
    image.png
    bzip2的压缩率比gzip好,但大容量文件来说,bzip2压缩时间会比gzip压缩时间久

xz,zcat/zmore/zless、zgrep

xz的压缩比更高,用法和gzip/bzip2几乎一模一样
xz [-dtlkc#] 文件名
xcat 文件名.xz
选项与参数:

  • -d:解压缩
  • -t:测试压缩文件的完整性,有无错误
  • -l:列出压缩文件的相关信息
  • -l:保留原本的文件不删除
  • -c:将数据在屏幕上输出
  • -#:计算压缩比的参数
    image.png

打包命令:tar

虽然gzip、bzip2、xz也能够针对目录来进行压缩,不过压缩目录时只是将所有的文件分别进行压缩,而不是将多个数据包成一个文件的样式
将多个文件或目录包成一个大文件的命令功能,可以称之为一种打包命令。tar使用太广泛了,目前windows也支持tar.gz文件名的解压缩

tar

image.png
tar选项与参数很多,常用的如下
tar [-z|-j|-J] [cv] [-f 待建立的文件名] filename...
tar [-z|-j|-J] [cv] [-f 既有的tar文件名]
tar [-z|-j|-J] [cv] [-f 既有的tar文件名] [-C 目录]
选项与参数:

  • -c:建立打包文件,可搭配-v来查看过程中被打包的文件名(filename)
  • -t:查看打包文件的内容含有哪些文件名,重点在查看【文件名】
  • -x:解包或解压缩的功能,可以搭配-C在特定目录解压,特别留意-c、-t、-x不可同时出现在一串命令行中
  • -z:通过gzip的支持进行压缩/解压缩:此时的文件名最好为*.tar.gz
  • -j:通过bzip2,此时文件名:*.tar.bz2
  • -J:通过xz,此时文件名:*.tar.xz,特别留意-z、-j、-J不可同时出现在一串命令行中
  • -v:在压缩/解压缩的过程中,将正在处理的文件名显示出来
  • -f filename:-f后面要立刻接要被处理的文件名,建议-f单独写一个选项(比较不会忘记)
  • -C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
  • -p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
  • -P:保留绝对路径,允许备份数据中含有根目录存在之意
  • -exclude=FILE:在压缩的过程中,不要将FILE打包
    最简单的使用tar只要记住以下命令
  • 压缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查询:tar -jtc -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 [-C 欲解压缩的目录]

总结

  • filename.tar.bz2是压缩后的文件名,也是我们自己命名的,tar并不会主动的产生建立的文件名,我们要自定义,所以扩展名就显得很重要
  • 如果文不加[-z][-j][-J]的话,文件名最好为*.tar即可,如果是-j则取名*.tar.bz2,-z则最好取名为*.tar.gz
  • 由于[-f filename] 是紧接在一起的,但是很多文章会写成[-jcvf filename],但是由于选项的顺序是可以变换的,所以会误认为[-jvfc filename]也可以,事实上这样会导致产生的文件名变成c,因为-fc所以会变成c。所以建议将[-f filename]与其他选项独立出来,会比较不容易发生问题

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

备份/etc最简单的方法就是使用tar
image.png
image.png
image.png
image.png
image.png
上图可以显示压缩率越高,则花费的时间越长。43M的文件夹用gzip花费了3秒,而用xz则花费了36秒,如果数据量过大要考虑时间成本

查看tar文件的数据内容(可查看文件名),与备份文件名有否根目录的意义

tar -jtv -f /root/etc.tar.bz2
image.png
使用tar备份的数据可能会需要解压缩回来使用,在tar所记录的文件名(即上图中使用tar -jtvf 所查看到的文件名)那就是解压缩后的实际文件名,如果去除了根目录/,则备份数据会在解压的目录下打开,如果没有去掉根目录/则解压缩后的文件名就会是绝对路径,即解压后的数据一定会被放置到根目录下的文件夹,则原本的文件夹将会被备份数据所覆盖,非常不安全
如果非要记录使用根目录/则压缩的时候则可以使用tar -P

将备份的数据解压缩,并考虑特定目录的解压缩操作(-C 选项的应用)

tar -jxv -f [想要解压的文件] [-C 解压目标地址]
如果不加解压地址则默认解压到当前文件夹下

仅解开单一文件的方法

只需要打开包内的其中一个文件,需要使用-jtv找到文件名解压
tar -jtv -f 打包文件.tar.bz2 | grep '文件名(不包含目录)'
tar -jxv -f 打包文件.tar.bz2 待解开文件名(包含目录)

打包某目录,但不包含改目录下的某些文件

  • --exclude不包含
    image.png

仅备份比某个时刻还要新的文件

基本名称:tarfile、tarball

  • tarfile:tar如果仅仅是打包[tar -cv -f file.tar]而不是压缩,则为tarfile。
  • tarball:如果还进行压缩打包[tar -jcv -f file.tar.bz2],则为tarball。上述仅仅是称呼而已

XFS文件系统的备份与还原

其他常见的压缩与备份工具

Linux
Linux基础
许可协议: 
分享

相关文章

8月 1, 2021

网络的基本概念

掌握最基本的网络概念,TCP/IP与OSI七层协议网络什么是网络发展史网络网络是跨平台的操作系统有很多,需要制定共同遵守的标准才行。该标准由国际组织规范的,系统只要提供可以加入该标准的程序代码,就能够通过这个标准与其他系统进行沟通什么是网络通过网线或者是无线网络技术将设备连接起来,使得数据可以通过网

7月 27, 2021

搭建服务器前的准备工作

具备配置网络服务器的基本技能Linux的功能用Linux搭建服务器需要的能力搭建服务器的基本流程网络服务器成功连接的分析Linux的功能最重要为:开源稳定用Linux搭建服务器需要的能力搭建容易、维护难基本的网络概念进行联网与配置及排错基本的操作系统操作登录控制、账号管理、文本编辑器使用技巧信息安全

12月 28, 2020

X Window 设置介绍

Linux上面的图形用户界面模式称为X Window System,简称为X或X11。X Window System分为X Server 与X Client(C/S架构),是可以跨网络、跨平台的什么是 X Window SystemX Window System 的发展简史总结:什么是 X Wind

下一篇

vim程序编辑器

上一篇

Linux磁盘与文件系统管理

最近更新

  • 55 异常兜底:工具失败、非法输出、空检索与超时
  • 54 Agent Memory:短期记忆、用户上下文与摘要
  • 53 Human-in-the-loop:让关键动作暂停、确认与恢复
  • 52 工单 Tool:字段校验、创建结果与失败补偿
  • 51 订单 Tool:Mock、鉴权、状态解析与脱敏

热门标签

java基础 微服务 maven Spring Tomcat DDD Linux Linux基础 SQL基础 数据结构算法

目录

©2026 一条在知识海洋的咸鱼. 保留部分权利。

使用 Halo 主题 Chirpy