当前位置: 首页 > article >正文

Shell文档归档、压缩与解压

Shell文档归档、压缩与解压

      • 1、文件归档与压缩
      • 2、zip、gzip与tar指令
        • 2.1、zip指令
        • 2.2、gzip指令
        • 2.3、tar指令




1、文件归档与压缩


归档文件是指将一组文件或目录保存到一个文件中;压缩文件是指将一组文件或目录按照某种存储格式保存到一个文件中,所占磁盘空间比其中所有文件总大小要少

归档文件是没有经过压缩的,它所使用的磁盘空间等于其所有文件大小的总和。因而,用户可以将归档文件再进行压缩,使其容量更小

gzip是Linux中最流行的压缩工具,具有较好的移植性,可在不同架构的系统中使用。如果用户需要经常在Linux与Windows之间交换文件,建议使用zip

目前,归档文件使用最广泛的是tar命令,tar可以将若干文件或目录合并到一个称为tarfile的文件中,最初的设计目的是将文件备份到磁带(Tape ARchive)上,因而得名tar,通常文件扩展名为.tar,然后,再使用zipgzip等压缩工具进行压缩

压缩工具解压工具文件扩展名
zipunzip.zip
gzipgunzip.gz
tartar.gz.tgz.bz2

在Linux系统中,通常更倾向于使用.tar的压缩文件格式,因为.tar文件本身并不是压缩文件,而是一种归档文件格式

2、zip、gzip与tar指令

2.1、zip指令

zip指令可以压缩文件或目录,一般后缀名为.zip,压缩后不覆盖源文件,并且能够保留文件的原始结构和属性,其语法格式如下:

zip [选项] 文件名.zip 文件/目录

常用选项如下:

  • -r:递归压缩,将目录下的所有文件和子目录全部压缩

例如,压缩/etc/目录(压缩文件名为etc.zip):

zip -r etc.zip /etc/

unzip指令对zip压缩文件进行解压缩,其语法格式如下:

unzip 文件名.zip [-d dir]

其中,-d可用于指定解压目标目录,例如:

unzip etc.zip -d ./test/
2.2、gzip指令

gzip指令只能用来压缩文件,不能压缩目录,即使指定了目录,也只能压缩目录里的所有文件,一般后缀名为.gz,压缩后会删除源文件,该命令会自动在当前文件名后添加扩展名.gz,其语法格式如下:

gzip [选项] 文件名

常用选项如下:

  • -num:指定压缩比率,可选有1~9等级,默认为6
  • -d:将文件解压,功能与gunzip相同
  • -l:查看压缩文件的信息,包括文件数、大小、压缩比等参数

例如,压缩log.txt文件为log.txt.gz

gzip log.txt

gunzip指令用于解压缩gzip压缩的文件,其语法格式如下:

gunzip [选项] 文件名.gz

值得注意的是,选项-f用于解压缩文件时,对覆盖同名文件不做提示(如果目标文件已经存在,不会进行提示,直接覆盖),在执行该命令后,它将删除旧的未压缩的文件并只保留已压缩的版本

2.3、tar指令

tar指令用于将Linux文件和目录创建为归档文件或将归档文件还原为文件和目录。此外,tar也可以在归档文件中改变文件,或者向归档文件中添加新的文件

tar可用于压缩与解压缩。正向是打包与压缩,反向是解压缩与还原。打包是指将若干文件或目录变成一个总文件,压缩则是将一个总文件通过一些压缩算法(gzipbzip2)变成一个小文件。反之,解压缩与还原刚好是相反的过程

tar指令的语法格式如下:

tar [选项] 归档/压缩文件 文件/目录 

常用选项如下:

  • -c:创建一个新的归档文件
  • -z:由tar生成归档,然后由gzip命令压缩或解压归档
  • -j:由tar生成归档,然后由bzip2命令压缩或解压归档
  • -v:显示指令执行归档或释放的过程信息
  • -f:用户指定归档文件的文件名,否则使用默认名称tar
  • -x:释放归档文件,从归档提取文件
  • -C:将归档工作目录从当前目录改为指定目录,对顺序敏感,即影响其后的所有选项

例如,指定打包为.dat归档文件并使用gzip进行压缩:

tar -czvf test.dat.gz ./test.dat/

压缩后的文件名称为test.dat.gz

例如,将归档并使用gzip压缩的文件解压到指定目录下:

tar -zxf test.dat.gz -C ../test/

解压缩后在test目录下可看到名为test.dat的目录




http://www.kler.cn/a/557536.html

相关文章:

  • C++STL容器之set
  • matlab编写的不平衡磁拉力方程
  • 程序员本地网站(WEB)
  • 边缘计算在工程中的应用与实践
  • Unity实用技能-UI与粒子效果总结
  • NeurIPS-2024 | 具身智能如何理解空间关系?SpatialRGPT:视觉语言模型中的具象空间推理
  • vue-fastapi-admin 部署心得
  • 数据结构:实验题目:单链表归并。将两个非递减次序排列的单链表归并为一个非递增次序排列的单链表,并计算表长。要求利用原来两个单链表的结点存放合并后的单链表。
  • Java子类调用父类构造器的应用场景
  • HDFS Java 客户端 API
  • js版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性
  • 【多模态处理篇一】【 深度解析DeepSeek图文匹配:CLIP模型迁移实战——从原理到落地的保姆级教程】
  • 前端面试-网络协议篇
  • 【Node.js】express框架
  • 图论 之 迪斯科特拉算法求解最短路径
  • 代码随想录D52-53 图论 Python
  • DeepSeek 全面分析报告
  • Verilog define预处理命令
  • strcpy与strncpy作为复制函数的用法与区别
  • Java中的Stream API:从入门到实战