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

Linux实战笔记(三) 文件压缩

大家好,我是半虹,这篇文章来讲 Linux 系统中常用的文件压缩方式


0、序言

在 Linux 系统中,存在许多打包或压缩文件的工具

这篇文章会对一些常用的工具进行分类整理和介绍

如果只是需要知道怎么对不同格式的文件做解压缩,可以直接跳转到本文最后的总结部分

如果希望了解不同压缩工具的使用方法和应用场景,那么可以跟随正文一起进行深入探讨

好了,下面是正文部分


1、tar

tar 命令本质上是用于打包文件,并不会做压缩,其打包的文件通常带有 .tar 后缀


命令格式如下:

tar [OPTION...] [FILE]..

常用参数如下:

短参数长参数作用
-c--create打包指定文件到新的包
-r--append新增指定文件到已有包
-u--update在已有包更新指定文件
--delete在已有包删除指定文件
-t--list列出包中文件
-x--extract还原包中文件
-f--file指定包的名称
-v--verbose显示详细信息

tar 命令在打包之后,可以通过参数调用压缩工具进一步对其进行压缩,使用的参数如下:

短参数长参数压缩工具压缩后的文件后缀
-z--gzipgzip.tar.gz / .tgz
-Z--compresscompress.tar.Z
-j--bzip2bzip2.tar.bz2
-J--xzxz.tar.xz

下面通过一些简单的例子,了解一下常用的参数组合

# 打包所有后缀为 txt 的文件到新的包 packed.tar
tar -cvf packed.tar *.txt# 新增所有后缀为 png 的文件到已有包 packed.tar
tar -rvf packed.tar *.png# 更新已有包 packed.tar 所有后缀为 txt 的文件
tar -vf packed.tar --update *.txt# 删除已有包 packed.tar 所有后缀为 png 的文件
tar -vf packed.tar --delete *.png# 列出已有包 packed.tar 所有文件
tar -tvf packed.tar# 还原已有包 packed.tar 所有文件
tar -xvf packed.tar# 打包并压缩【常用】
tar -zcvf packed.tar.gz *.txt# 解压并还原【常用】
tar -zxvf packed.tar.gz *.txt# 实际上对于这种先打包再压缩的文件
# 我们既可以使用上述命令解压并还原
# 同时也可以先用对应工具解压,然后再用 tar 还原或做其它操作# 解压后缀为 .gz 的文件
gzip -dk xxx.gz# 解压后缀为 .Z 的文件
gzip -dk xxx.Z# 解压后缀为 .bz2 的文件
bzip2 -dk xxx.bz2# 解压后缀为 .xz 的文件
xz -dk xxx.xz

上面提到的四种压缩方式,这里也做一个简单的介绍

压缩方式文件后缀压缩比率压缩速度解压速度使用场景
gzip.gz适中较快较快十分常用,绝大多数系统都有支持
compress.Z较低较快较快极少使用,只会在老系统遇到
bzip2.bz2较高较慢较慢比较常用,特别是在高压缩比场景
xz.xz很高较慢较慢比较常用,特别是在高压缩比场景

如果对压缩比例、压缩速度、解压速度在大多数情况下进行排序,大致如下:

  • 压缩比率:xz > bzip2 > gzip > compress
  • 压缩速度:gzip > compress > bzip2 > xz
  • 解压速度:gzip > compress > bzip2 > xz

对于各压缩算法的使用场景,推荐如下:

  • 如果希望平衡压缩比和解压缩时间,那么推荐选择 gzip
  • 如果追求较高压缩比,不在乎时间,那么推荐选择 bzip2 或者 xz

下面来测试下各个压缩算法的实际表现

就地取服务器上的一个大型前后端项目,包括程序文件、图片资源、文本资源、模型资源等共 4G 大小

对其进行打包之后压缩,各项指标如下:

测试命令压缩算法压缩后的文件大小压缩时间解压时间
time tar -cf xxx.tar ./xxx/3.6G0m6.003s0m24.740s
time tar -zcf xxx.tar.gz ./xxxgzip2.5G2m9.206s0m46.089s
time tar -jcf xxx.tar.bz2 ./xxxbzip22.2G11m4.117s4m45.567s
time tar -Jcf xxx.tar.xz ./xxxxz1.3G20m0.949s1m36.590s

需要注意的是,不同的压缩算法对于不同的文件类型具有很大差异

上述测试旨在提供一个参考,并不能代表所有的情况


2、zip & rar

除了上述用于打包的 tar  以及同步介绍的 gzipcompressbzip2xz 等压缩方式

ziprar 也是很常用的压缩格式,特别是在 Windows 系统上


对于这些 Windows 系统上常用的压缩算法,Linux 也有提供相应的支持

  • 对于 zip 格式,可以使用 zip 命令进行压缩,对应使用 unzip 命令进行解压
  • 对于 rar 格式,可以使用 rar 命令进行压缩,对应使用 unrar 命令进行解压

3、总结

文件后缀压缩命令解压命令
.tartar -cvf xxx.tar ...tar -xvf xxx.tar
.tar.gz / tgztar -zcvf xxx.tar.gz ...tar -zxvf xxx.tar.gz
.tar.bz2tar -jcvf xxx.tar.bz2 ...tar -jxvf xxx.tar.bz2
.tar.xztar -Jcvf xxx.tar.xz ...tar -Jxvf xxx.tar.xz
.gzgzip -k ... gzip -dk xxx.gz
.bz2bzip2 -k ... bzip2 -dk xxx.bz2
.xzxz -k ... xz -dk xxx.xz
.zipzip xxx.zip ...unzip xxx.zip
.rarrar a xxx.rar ...unrar e xxx.rar


好啦,本文到此结束,感谢您的阅读!

如果你觉得这篇文章有需要修改完善的地方,欢迎在评论区留下你宝贵的意见或者建议

如果你觉得这篇文章还不错的话,欢迎点赞、收藏、关注,你的支持是对我最大的鼓励 (/ω\)

相关文章:

Linux实战笔记(三) 文件压缩

大家好,我是半虹,这篇文章来讲 Linux 系统中常用的文件压缩方式 0、序言 在 Linux 系统中,存在许多打包或压缩文件的工具 这篇文章会对一些常用的工具进行分类整理和介绍 如果只是需要知道怎么对不同格式的文件做解压缩,可以直…...

树形递归模板

详情参考CSDN链接: https://www.cnblogs.com/lidar/p/12972792.html public class Menu {// 菜单idprivate String id;// 菜单名称private String name;// 父菜单idprivate String parentId;// 菜单urlprivate String url;// 菜单图标private String icon;// 菜单顺序private …...

Python实战:Pandas数据合并与重塑

本文将深入探讨Pandas库在数据合并与重塑方面的强大功能。我们将涵盖多种数据合并方法,如merge、join、concat等,以及数据重塑的技巧,如pivot_table、merge_asof等。 一、引言 Pandas是一个强大的Python数据分析库,它提供了丰富…...

如何理解 Linux 命令行参数与环境变量7

一、命令行参数 1.1参数介绍 在写C语言程序时,main函数是否可以带参数呢?------ 是可以的 int argc: 命令行参数的个数char *argv[ ]: 字符指针数组(指向各个命令行参数的字符指针所构成的数组) 我们写一段代码来打印一下看这…...

奥特曼回应GPT5

欢迎再次与大家会面!在积累了大量的信息和趋势后,今天我们将深入了解 Sora、OpenAI 董事会、以及近期与其有关的所有声讨。我们将直接跳入与 OpenAI 首席执行官 Sam Altman 的深度访谈,探讨从 AGI 到 GPT-5 的未来,以及 Sam 对人工…...

QT----给程序添加上任务栏托盘图标和退出

让我们的程序拥有任务栏托盘图标,实现程序后台运行,退出等功能 1、关闭程序保持后台 重写关闭事件,忽略点击窗口关闭 void MainWindow::closeEvent(QCloseEvent *event) {// 隐藏窗口,而不是真正关闭setVisible(false);// 忽略关闭事件&am…...

arm地址对齐的总结

static void axi_azx_writeb(u8 value, u8 __iomem *addr) { u32 data; u32 offset; offset (u64)addr & 0x03; // 编译器不允许地址做& 操作时要强转为数据 addr (u8 __iomem *)((u64)addr & 0xFFFFFFFFFFFFFFFC); // __iomem是个64位的地址 u8表示从这个地址…...

就业班 2401--3.13 走进网络

走进网络 长风破浪会有时,直挂云帆济沧海。 1.认识计算机 1.计算机网络是由计算机和通讯构成的,网络研究的是“通信”。 ------1946 世界上第一台计算机 2.终端:只有输入和输出功能,没有计算和处理功能。 3.数据:一串…...

SWIFT介绍和学习(简单入门级别)

SWIFT介绍和学习 SWIFT功能介绍SWIFT快速使用LLM及LLM最佳实践(LLM系列文章)部署指南 vllm非官方介绍资料 项目地址:https://github.com/modelscope/swift 任何有疑惑的地方,参考项目首页readme寻求答案 SWIFT功能介绍 SWIFT&…...

智慧城市:提升城市治理能力的关键

目录 一、智慧城市的概念及特点 二、智慧城市在提升城市治理能力中的应用实践 1、智慧交通:提高交通治理效率 2、智慧政务:提升政府服务水平 3、智慧环保:加强环境监测与治理 4、智慧安防:提高城市安全水平 三、智慧城市在…...

golang 对接第三方接口 RSA 做签(加密) 验签(解密)

一、过程 1.调用第三方接口前,一般需要按规则将参数按key1value1&key2value2 阿斯克码排序,sign参数不参与加密 2.将排序并连接好的参数字符串通过我方的私钥证书(.pem)进行加密得到加密串,当然加密得到的是 []byte 字节流&…...

Spring Data访问Elasticsearch----Elasticsearch存储库Repositories

Spring Data访问Elasticsearch----Elasticsearch存储库Repositories 一、自动创建具有相应映射的索引二、存储库方法的注解2.1 Highlight2.2 SourceFilters 三、基于注解的配置四、Spring命名空间Namespace 本文包括Elasticsearch存储库实现的细节。 例1:示例Book实…...

初探 Cocos Creator: 碰撞与物理系统

前言 不知道你刚开始玩碰撞时,会不会遇到始终无法触发碰撞事件?玩物理系统时,自由落体的刚体会穿过 “地面” 刚体等情况?没错我全都遇到过,那么下面我就用红蓝色方块,简单实战一下 Cocos Creator 的碰撞与…...

Vue组件封装方案对比——v-if方式与内置component方式

近期在准备搭建一个通用组件库,而公司现有的各个系统也已有自己的组件库只是没抽离出来,但是目前有两套不同的组件封装方案,所以对于方案的选择比较困惑,于是对两种方式进行了对比,结合网上找到的一些开源组件库进行分…...

python与excel第四节 批量新增、删除工作表

在多个工作簿中批量新增工作表 假设,一个文件夹下面有多个excel文件,需要再每个excel文件中增加一个sheet。 例子: import osimport xlwings as xw file_path D:\\TEST\\python与excelfile_list os.listdir(file_path) sheet_name 产品…...

计算机网络——计算机网络体系结构

计算机网络——计算机网络体系结构 计算机网络体系结构的由来正确认识分层协议与层次划分著名的几个体系结构OSI体系结构TCP/IP体系结构5层体系结构 我们今天来了解一下计算机网络体系结构: 计算机网络体系结构的由来 俗话说,“没有规矩,不…...

近期常用linux命令总结

linux mv [options] source dest : 移动文件 cp [options] source : 复制文件 ps -a: 列出所有进程 ps -ef | grep 进程关键字: 查找指定进程 (-e 显示所有进程 -f 全格式) docker docker images 显示所有镜像 docker pull [IMAGE_NAME] : 拉取某个镜像&#xf…...

变配电站配电监控解决方案--变电站综合自动化系统

变电站综合自动化系统 Acrel-1000变电站综合自动化监控系统是我司根据电力系统自动化及无人值守的要求,总结国内外的研究和生产的先进经验专门研制出的新一代电力监控系统。本系统具有保护、遥测、遥信、遥脉、遥调、遥控功能,可实现无人或少人值守功能…...

【ollama】linux、window系统更改模型存放位置,全网首发2024!

首先是window系统 so easy 直接进入系统环境变量添加就行 其次是linux系统 全靠自己试出来的,去Ollama官网找半天文档不知道在哪,而且linux也没有说:【 https://github.com/ollama/ollama/blob/main/docs/README.md https://github.com/o…...

Spring 被打暴了! vs Javalin vs Solon

测试仅供参考。不同的环境、场景,效果会不同。 测试记录: 项目SpringBoot2SpringBoot3JavalinSolon运行时java 17java 17java 17java 17测试前状态/内存101.1Mb112.9Mb66.1Mb45.6Mb测试后状态/内存996.3Mb326.9Mb457.3Mb369.2Mb测试后状态/并发2万2.6万…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐)​​ 在 save_images 方法中,​​删除或注释掉所有与 metadata …...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

macOS 终端智能代理检测

🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...

数据库——redis

一、Redis 介绍 1. 概述 Redis(Remote Dictionary Server)是一个开源的、高性能的内存键值数据库系统,具有以下核心特点: 内存存储架构:数据主要存储在内存中,提供微秒级的读写响应 多数据结构支持&…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...