Linux文件的压缩和解压

【图书推荐】《Ubuntu Linux系统管理与运维实战》_学ubuntu哪本书好-CSDN博客

【图书介绍】】几本Linux系统管理与运维图书_朱文伟 linux驱动-CSDN博客

《Ubuntu Linux系统管理与运维实战(Linux技术丛书)》(张春晓,肖志健)【摘要 书评 试读】- 京东图书

在归档文件的时候,通常是对文件进行压缩处理,以节约磁盘空间。而需要查询归档文件的时候,则是将压缩后的文件释放出来。Linux提供了非常多的压缩和解压缩工具,这些工具通常是成对出现的,每种工具都有自己的特色。本节将对常用的几种压缩/解压缩工具进行介绍。

5.8.1  压缩文件

压缩文件是按照某种特定的压缩算法将文件内容进行压缩,以减少占用的磁盘空间。Linux系统中常用的压缩命令有zip、gzip、compress、bzip2等。

1. zip命令

zip命令的基本语法如下:

zip [option] zipfile file ...

zip命令常用的选项有:

  1. -d:从压缩文件中删除指定的文件。
  2. m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
  3. -r:递归处理,将指定目录下的所有文件和子目录一并处理。

zipfile参数为压缩文件的名称,file参数为要压缩的文件列表,多个文件名之间用空格隔开,可以使用通配符。zip命令压缩后的文件的扩展名为.zip。

例如,下面的命令将所有.c文件压缩成src.zip文件:

liu@ubuntu:~$ zip src.zip *.c
  adding: all.c (deflated 69%)
  adding: file.c (deflated 32%)
  adding: hello.c (deflated 13%)

使用-d选项可以将某个文件从压缩文件中删除,如下所示:

liu@ubuntu:~$ zip -d src.zip file.c
deleting: file.c

上面的命令将file.c文件从src.zip文件中删除。

使用-r选项可以实现递归压缩目录,例如,下面的命令将src目录及其子目录压缩为src.zip:

liu@ubuntu:~$ zip -r src.zip src
  adding: src/ (stored 0%)
  adding: src/hello1.c (deflated 20%)
  adding: src/test.c (stored 0%)
  adding: src/file.c (deflated 32%)
  adding: src/hello.c (deflated 13%)
2. gzip命令

gzip是Linux系统中经常使用的压缩命令之一,既方便又好用。gzip不仅可以用来压缩大的文件以节省磁盘空间,还可以和tar命令一起构成Linux系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时可以减少传输的时间。gzip命令的基本语法如下:

gzip [ option ] [ name ...  ]

gzip命令常用的选项有:

  1. -d:解压缩文件。
  2. -l:列出压缩文件中每个文件的信息,包括压缩后的大小、压缩前的大小、压缩比以及文件名等。
  3. -r:递归处理,将指定目录下的所有文件及子目录一并处理。

name参数为要压缩的文件的列表,支持通配符。gzip命令压缩后的文件的扩展名为.gz。

例如,下面的命令将当前目录中的所有日志文件压缩成.gz文件:

liu@ubuntu:~/logback$ gzip *.log

压缩完成之后,可以使用ls命令查看执行结果,如下所示:

liu@ubuntu:~/logback$ ls -l
总用量 12
-rw-r--r-- 	1 	liu 	liu 		8146 	9月   9 11:25 	bootstrap.log.gz
-rw-r--r-- 	1 	liu 	liu  	576 		9月   9 11:25 	fontconfig.log.gz

可以发现,默认情况下gzip命令会逐个将文件压缩,压缩文件以源文件名加上后缀.gz命名,操作完成后,原始文件被删除。

用户可以使用-l选项查看该压缩文件,如下所示:

liu@ubuntu:~/logback$ gzip -l bootstrap.log.gz 
         compressed      	uncompressed  	ratio	 	uncompressed_name
        	8146       		59400  			86.3% 		bootstrap.log

单独的gzip命令不可以将多个文件压缩为一个文件,但是用户可以结合tar命令来实现这个操作。首先通过tar命令将所需要压缩的文件打包,然后将打包后的.tar文件压缩。这就是在Linux系统中经常见到的.tar.gz文件。

3. compress命令

compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出.Z的扩展名。compress命令的基本语法与gzip大同小异。例如,下面的命令将当前目录中的所有的.c文件压缩为.Z文件:

liu@ubuntu:~/src$ compress *.c
liu@ubuntu:~/src$ ls -l
总用量 16
-rwxr-xr-x 	1 	liu 		liu 		273 		9月   9 11:09 	file.c.Z
-rwxr-xr-x 	1 	liu 		liu 		171 		9月   9 11:09 	hello1.c.Z
-rwxr-xr-x 	1 	liu 		liu 		135 		9月   9 11:09 	hello.c.Z
…
4. bzip2

bzip2命令用于创建和管理扩展名为.bz2的压缩包。bzip2命令常用的选项有:

  1. -d:执行解压缩。
  2. -f:在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,则使用此选项。
  3. -k:在执行压缩时,保留原始文件。

例如,下面的命令将当前目录中所有的.c文件压缩为.bz2文件:

liu@ubuntu:~/src$ bzip2 *.c
liu@ubuntu:~/src$ ls -l
总用量 16
-rwxr-xr-x 	1 	liu 		liu 		278 		9月   9 11:09 	file.c.bz2
-rwxr-xr-x 	1 	liu 		liu 		185 		9月   9 11:09 	hello1.c.bz2
-rwxr-xr-x 	1 	liu 		liu 		155 		9月   9 11:09 	hello.c.bz2
-rw-r--r-- 	1 	liu 		liu  	42 		9月   9 15:30 	test.c.bz2
…

注意:除zip命令外,gzip、compress以及bzip2命令都不可以将多个文件压缩为单个文件。在使用后3个命令压缩文件时,可以结合tar命令实现将多个文件压缩为单个文件。

5.8.2  解压文件

由于每个压缩命令都有自己的压缩算法,因此压缩命令和解压命令通常都是成对的。zip、gzip、compress和bzip2命令对应的解压命令分别为unzip、gunzip、uncompress和bunzip2。

例如,下面的命令列出压缩文件src.zip中的文件列表:

liu@ubuntu:~$ unzip -l src.zip 
Archive:  src.zip
  Length      	Date    			Time    		Name
---------  		---------- 		-----   		----
    	0  			2023-07-09 		15:30   		src/
   	183  		2023-07-09 		11:09   		src/hello1.c
    	5  			2023-07-09 		15:30   		src/test.c
   	331  		2023-07-09 		11:09   		src/file.c
    	138  		2023-07-09 		11:09   		src/hello.c
---------                     		-------
      657       

下面的命令将文件src.zip解压:

liu@ubuntu:~$ unzip src.zip 
Archive:  src.zip
  inflating: src/hello1.c            
 extracting: src/test.c              
  inflating: src/file.c              
  inflating: src/hello.c     

下面的命令将sorted1.txt.gz文件解压,并且删除压缩文件:

liu@ubuntu:~$ gunzip sorted1.txt.gz

下面的命令将all.c.gz文件解压,并且删除压缩文件:

liu@ubuntu:~$ uncompress all.c.gz

下面的命令将所有的.bz2文件解压:

liu@ubuntu:~/src$ bunzip2 *.bz2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/942885.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的海洋知识服务平台的设计与实现

基于springboot的海洋知识服务平台的设计与实现 写在前面 需要源码加lzlv58787 开发内容 编程语言:Java / Vue2 框架: SpringBoot Shiro Mybatis-plus 项目结构 后端管理系统前台Web 后端管理系统 前台Web

论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMs&#xff…

【LeetCode】394、字符串解码

【LeetCode】394、字符串解码 文章目录 一、递归: 嵌套类问题1.1 递归: 嵌套类问题 二、多语言解法 一、递归: 嵌套类问题 1.1 递归: 嵌套类问题 // go func decodeString(s string) string {// 如果遇到 嵌套括号的情况, 则递归// 可能连续多位数字, 则 通过 cur cur * 10 …

iOS开发代码块-OC版

iOS开发代码块-OC版 资源分享资源使用详情Xcode自带代码块自定义代码块 资源分享 自提: 通过网盘分享的文件:CodeSnippets 2.zip 链接: https://pan.baidu.com/s/1Yh8q9PbyeNpuYpasG4IiVg?pwddn1i 提取码: dn1i Xcode中的代码片段默认放在下面的目录中…

微信小程序的轮播图学习报告

微信小程序轮播图学习报告 好久都没分享新内容了,实在惭愧惭愧。今天给大家做一个小程序轮播图的学习报告。 先给大家看一下我的项目状态: 很空昂!像一个正在修行的老道,空的什么也没有。 但是我写了 4 个 view 容器,…

airflow docker 安装

mkdir -p /root/airflow cd /root/airflow && mkdir -p ./dags ./logs ./plugins ./configcd /root/airflow/ wget https://airflow.apache.org/docs/apache-airflow/2.10.4/docker-compose.yaml nano docker-compose.yamlAIRFLOW__CORE__LOAD_EXAMPLES: false #初始化…

Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)

1、概述 在传统的单体应用中,事务管理相对简单,通常使用数据库的本地事务(如MySQL的BEGIN和COMMIT)来保证数据的一致性。然而,在微服务架构中,由于每个服务都有自己的数据库,跨服务的事务管理变…

Linux x86_64离线安装Nginx全教程(含安装包)

最近在整理麒麟V10操作系统的常用中间件的安装今天也把之前的nginx一起整理一下,作为后续的笔记记录 1. 资源 百度网盘下载相关安装包包含信息如下截图 通过网盘分享的文件:nginx链接: https://pan.baidu.com/s/1r6SCnogqbhm-JOTPIjc6xA?pwdjuen 提取…

Python酷库之旅-第三方库Pandas(269)

目录 一、用法精讲 1276、pandas.tseries.offsets.BQuarterEnd.is_quarter_end方法 1276-1、语法 1276-2、参数 1276-3、功能 1276-4、返回值 1276-5、说明 1276-6、用法 1276-6-1、数据准备 1276-6-2、代码示例 1276-6-3、结果输出 1277、pandas.tseries.offsets.…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架;这篇文章是本人大一上学习前端的笔记;欢迎点赞 收藏 关注,本人将会持续更新。本人不是学前端的,这个是大一的时候上学的和做的笔记,那个时候学的也蒙,故这里对前端做一个总…

API-AI聊天替换网站

当你下载了API-AI聊天软件,但是不会用, Install Windows(PC) | Chatbox Releases ChatGPTNextWeb/ChatGPT-Next-Web GitHub 方法一 请看对应网站的介绍文档。 找到类似于这样说明文档,然后替换 方法二 或者找代码

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

Flink调优----资源配置调优与状态及Checkpoint调优

目录 第 1 章 资源配置调优 1.1 内存设置 1.1.1 TaskManager 内存模型 1、内存模型详解 2、案例分析 1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源 1.2.1 使用 DefaultResourceCalculator 策略 1.2.2 使用 DominantResourceCalculator 策略 1.2.3 使用 DominantRes…

MySQL 常用程序介绍

以下是一些常用的MySQL程序: 程序名作⽤mysqldMySQL的守护进程即 MySQL 服务器,要使⽤MySQL 服务器 mysqld必须正在运⾏状态mysql MySQL客⼾端程序,⽤于交互式输⼊ SQL 语句或以批处理模式从⽂件执⾏SQL的命令⾏⼯具 mysqlcheck⽤于检查、修…

利用Gurobi追溯模型不可行原因的四种方案及详细案例

文章目录 1. 引言2. 追溯不可行集的四种方法2.1 通过约束增减进行判断2.2 通过computeIIS函数获得冲突集2.3 利用 feasRelaxS() 或 feasRelax() 函数辅助排查2.4 利用 IIS Force 属性1. 引言 模型不可行是一个让工程师头疼的问题,对于复杂模型而言,导致模型不可行的原因可能…

【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)

半监督学习是一种介于监督学习和无监督学习之间的机器学习方法。它利用少量的标注数据(有监督数据)和大量的未标注数据(无监督数据)来进行模型训练,从而在标注数据不足的情况下,提升模型的性能。 半监督学习…

西门子200smart实现TCP服务器源码分享

1、创建TCP服务器 2、服务器故障复位 3、TCP发送数据 4、TCP接收数据

攻防世界web第二题unseping

这是题目 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_array($this->method, array("ping"))) {cal…

Java如何避免过度打印日志导致性能问题

文章目录 Java如何避免过度打印日志导致性能问题前言日常开发如何打印日志1、优化日志结构&#xff08;1&#xff09;不要打印一些没用的日志&#xff0c;也不要在 for 循环里面去打印&#xff08;2&#xff09;不要做字符串的拼接&#xff0c;多用占位符&#xff08;3&#xf…

sentinel笔记9- 限流规则持久化(上)

之前的在sentinel 控制台配置的规则&#xff0c;重启后就消失了&#xff0c;sentinel 限流保护-笔记-CSDN博客 本篇还是在之前的demo做验证&#xff0c;使用nacos做持久化。 规则集成Nacos 1 引入依赖 <!--nacos-discovery 注册中心依赖--><dependency><gr…