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

Linux 常用压缩格式

Linux 常用压缩格式简介

Linux系统用户可以根据自己的需求选择合适的压缩工具来进行文件压缩和解压操作。Linux系统中常用的压缩软件都有相应的命令行工具,并且可以通过软件包管理器进行安装。主要有gzip、bzip2、zip、tar、7z。
gzip:gzip是一个广泛使用的开源压缩工具,它通常用于将单个文件进行压缩,生成以".gz"为后缀的压缩文件。gzip的压缩率较高,但无法压缩目录。
bzip2:与gzip类似,bzip2也是一种常见的压缩工具,它能够提供更高的压缩比和更长的压缩时间。bzip2生成的压缩文件通常以".bz2"为后缀。
zip:zip是一个常用的跨平台压缩工具,它可以对文件和目录进行压缩,并支持密码保护和分卷压缩。在Linux系统中,通常需要额外安装zip软件包。
tar:tar并不是一个压缩工具,而是一个归档工具,用于将多个文件或目录打包成一个文件。通常会搭配其他压缩工具(如gzip或bzip2)来对打包后的文件进行压缩,生成以".tar.gz"或".tar.bz2"为后缀的压缩文件。
7z:7z是一种高效的压缩工具,能够生成以".7z"为后缀的压缩文件,支持多种压缩算法和加密方式。

作者:炭烤毛蛋 ,点击博主了解更多。


提示:压缩率直接压缩时间,而压缩格式决定压缩率,按照实际场景选取合适压缩格式。

文章目录

  • Linux 常用压缩格式简介
  • 1. 常用压缩格式
    • 1.1 tar
      • 1.1.1 .tar格式
      • 1.1.2 .tar.bz2 格式
      • 1.1.3 .tar.gz 格式
    • 1.2 gzip
    • 1.3 bzip2
    • 1.4 zip
    • 1.5 rar
    • 1.6 7z
  • 2. 压缩格式对比
    • 2.1 压缩耗时
    • 2.2 压缩耗时对比
  • 结语


1. 常用压缩格式

1.1 tar

tar 是一个用于创建和提取压缩包的命令。

1.1.1 .tar格式

创建 tar 压缩包:

tar -cvf archive.tar /path/to/directory
  • -c:表示创建新的压缩包。
  • -v:显示归档过程中处理的文件。
  • -f:指定压缩包的名称。

提取 tar 压缩包:

tar -xvf archive.tar
  • -x:从压缩包中提取文件。
  • -v:显示提取过程中处理的文件。
  • -f:指定压缩包的名称。

1.1.2 .tar.bz2 格式

压缩成.tar.bz2格式:

tar -cvjf archive.tar.bz2 /path/to/directory_or_file

-c:创建新的压缩文件
-v:显示详细输出
-j:使用bzip2算法进行压缩
-f:指定压缩文件的名称

从.tar.bz2文件中提取:

tar -xvjf file.tar.bz2 -C /path/to/destination

-x:解压文件
-v:显示详细输出
-j:使用bzip2算法解压缩
-f:指定要解压的文件

1.1.3 .tar.gz 格式

压缩并创建 tar.gz 文件:

tar -czvf archive.tar.gz /path/to/directory
  • -z:使用 gzip 压缩/解压文件。
  • 其他参数与上述相同。

提取 tar.gz 文件:

tar -xzvf archive.tar.gz
  • -z:使用 gzip 解压文件。
  • 其他参数与上述相同。

提示:想要将文件提取到指定目录,可以使用-C选项:

tar -xvjf archive.tar.bz2 -C /path/to/destination

1.2 gzip

gzip 是一种常用的文件压缩工具,它通常与 tar 命令结合使用。

压缩文件:

gzip filename

解压缩文件:

gzip -d filename.gz

1.3 bzip2

bzip2 是一种高效的文件压缩工具,压缩后的文件通常比 gzip 更小。

压缩文件:

bzip2 filename

解压缩文件:

bzip2 -d filename.bz2

1.4 zip

zip 是一种常见的跨平台压缩和归档格式,可以在 Windows、Linux 和 macOS 中使用。

创建 zip 文件:

zip archive.zip file1 file2 file3

file1、file2和file3压缩成一个名为archive.zip的压缩文件。

zip -r archive.zip directory

这将会将整个directory目录以及其中的所有文件和子目录压缩成一个名为archive.zip的压缩文件。

解压 zip 文件:

unzip archive.zip

提取压缩文件

unzip archive.zip

这将会解压缩名为archive.zip的文件,并还原成原始的未压缩文件或目录。

你也可以使用-d选项来将文件提取到指定目录:

unzip archive.zip -d /path/to/destination

这将会把压缩文件中的内容提取到/path/to/destination目录。

1.5 rar

rar 是一种常用的压缩和归档格式,常用于 Windows 系统。

创建 rar 文件:

rar a archive.rar file1 file2 file3

这条命令将会把file1、file2和file3压缩成一个名为archive.rar的压缩文件。

想要设置压缩级别,最高压缩级别(5),可以使用-m选项:

rar a -m5 archive.rar file1 file2 file3

解压 rar 文件:

unrar x archive.rar

-e选项来将文件提取到指定目录:

rar e archive.rar /path/to/destination

将会把压缩文件中的内容提取到/path/to/destination目录。

1.6 7z

7z 是一种高压缩比的文件压缩工具,支持多种压缩和归档格式。在Linux系统中,你可以使用7z命令来进行文件的压缩和提取操作。

压缩文件

7z a archive.7z file1 file2 file3

这条命令将会把file1、file2和file3压缩成一个名为archive.7z的压缩文件。

如果你想要设置压缩级别,可以使用-mx选项:

7z a -mx=9 archive.7z file1 file2 file3

这将会以最高压缩级别(9)来压缩文件。

提取压缩文件

7z x archive.7z

这会解压缩名为archive.7z的文件,并还原成原始的未压缩文件或目录。

你也可以使用-o选项来将文件提取到指定目录:

7z x archive.7z -o/path/to/destination

这将会把压缩文件中的内容提取到/path/to/destination目录。

** 7z 压缩参数 **
-a 添加文件/文件夹到压缩包
-t 指定压缩格式,如-t7z表示指定压缩格式为7z
-o 是指定解压到的目录
-r 递归所有的子文件夹,这个选项通常可以忽略
-x 解压文件
通过这些命令,你可以在Linux系统中使用7z来进行文件的压缩和提取操作。

2. 压缩格式对比

压缩率和压缩时间是评估不同压缩算法和工具性能的重要指标。
压缩率:压缩率指的是在压缩文件后,文件大小相对于原始文件大小的比率。更高的压缩率意味着压缩效果更好,文件变得更小,节省了存储空间。压缩率可以通过计算压缩后文件大小与原始文件大小的比值来得到,常用百分比表示。
压缩时间:压缩时间指的是执行压缩操作所花费的时间。较短的压缩时间意味着压缩速度更快,适用于需要频繁进行大量文件压缩的场景。然而,有些情况下压缩时间并不是主要关注点,比如在后台进行压缩操作时,压缩时间可以放宽。

2.1 压缩耗时

各种压缩格式,压缩耗时。

~$ time tar cf test.tar testreal    0m0.289s
user    0m0.010s
sys     0m0.278s
~$ time tar cjf test.tar.bz2 testreal    0m56.559s
user    0m55.241s
sys     0m3.380s
~$ time tar czf test.tar.gz test/real    0m18.175s
user    0m17.855s
sys     0m1.589s
~$ time zip -r test.zip testreal    0m11.198s
user    0m10.851s
sys     0m0.270s~$ time rar a test.rar test
real    0m19.324s
user    1m10.378s
sys     0m26.131s~$ time 7z a test.7z test
real    0m11.704s
user    1m30.378s
sys     0m2.963s

压缩耗时:.tar.bz2 > .rar > .tar.gz > .7z > .zip > .tar。

2.2 压缩耗时对比

查看原始文件或目录大小

~$ du -h --max-depth=0 test
402M    test

查看压缩后文件大小

~$ ls test.* -lh
-rw-r--r-- 1 ice ice 188M Nov 19 14:46 test.7z
-rw-r--r-- 1 ice ice 199M Nov 19 14:45 test.rar
-rw-r--r-- 1 ice ice 388M Nov 19 14:29 test.tar
-rw-r--r-- 1 ice ice 198M Nov 19 14:31 test.tar.bz2
-rw-r--r-- 1 ice ice 199M Nov 19 14:28 test.tar.gz
-rw-r--r-- 1 ice ice 203M Nov 19 14:44 test.zip

压缩率:.7z > .tar.bz2 > .rar > tar.gz > zip > tar。

汇总以上测试结果到如下表中:

压缩格式压缩耗时压缩后大小压缩率百分比
.tar0.289s388M96.5
.tar.bz256.559s198M49.3
.tar.tgz18.175s199M49.5
.zip11.198s203M40.5
.rar19.324s199M49.5
.7z11.704s188M46.8

在实际应用中,选择合适的压缩算法和工具需要综合考虑压缩率和压缩时间。某些情况下,需要更高的压缩率来节省存储空间,而在另一些情况下,更看重压缩时间以提升效率。根据具体需求,可以权衡两者之间的关系,选择最适合的压缩算法和工具。

结语

不枉博主详细讲解,欢迎订阅博主–炭烤毛蛋 。

相关文章:

Linux 常用压缩格式

Linux 常用压缩格式简介 Linux系统用户可以根据自己的需求选择合适的压缩工具来进行文件压缩和解压操作。Linux系统中常用的压缩软件都有相应的命令行工具,并且可以通过软件包管理器进行安装。主要有gzip、bzip2、zip、tar、7z。 gzip:gzip是一个广泛使…...

高效背单词——单词APP安利

大英赛,CET四六级,以及考研英语,都在不远的未来再度来临,年复一年的考试不曾停息,想要取得好成绩,需要我们的重视并赋予相应的努力。对于应试英语,词汇量是不可忽略的硬性要求。相比于传统默写&…...

力扣 字母异位词分组 哈表 集合

👨‍🏫 力扣 字母异位词分组 ⭐ 思路 由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。 🍑 AC code class Solut…...

⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ MySQL存储过程 1. 介绍2. 使用3. 变量①系统变…...

使用SpringBoot进行游戏服务器开发

背景: 之前一直只考虑用JavaSe进行游戏服务器开发,目前项目使用了Spring,发现还是非常好的,好处如下: 好处1:依赖注入非常方便,我们只使用Spring最基本的功能即可,这样子就算是有一些模块不使用Spring管理…...

数据结构——树状数组

文章目录 前言问题引入问题分析树状数组lowbit树状数组特性初始化一个树状数组更新操作前缀和计算区间查询 总结 前言 原题的连接 最近刷leetcode的每日一题的时候,遇到了一个区间查询的问题,使用了一种特殊的数据结构树状数组,学习完之后我…...

Untiy 使用RotateAround()方法实现物体围绕某个点或者某个物体旋转

Untiy 实现物体围绕指定点或者某个物体旋转,可使用RotateAround()方法。 语法: public void RotateAround(Vector3 point, Vector3 axis, float angle); 其中,point:旋转中心点位置; axis:要围绕的轴,如x,y,z angel…...

图像分类(五) 全面解读复现ResNet

解读 Abstract—摘要 翻译 更深的神经网络往往更难以训练,我们在此提出一个残差学习的框架,以减轻网络的训练负担,这是个比以往的网络要深的多的网络。我们明确地将层作为输入学习残差函数,而不是学习未知的函数。我们提供了非…...

使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)

最近使用 html2canvas导出Table表单为图片,但是转换出的图片被合并的单元格没有显示边框 查了原因是因为我为tr设置了背景色,然后td设置了rowspan,设置了rowspan的单元格就会出现边框不显示的问题。 解决方法就是取消tr的背景色,然…...

pandas教程:Time Series Basics 时间序列基础

文章目录 11.2 Time Series Basics(时间序列基础)1 Indexing, Selection, Subsetting(索引,选择,取子集)2 Time Series with Duplicate Indices(重复索引的时间序列) 11.2 Time Seri…...

【C++初阶】STL详解(四)vector的模拟实现

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…...

Zookeeper学习笔记(2)—— Zookeeper API简单操作

前置知识&#xff1a;Zookeeper学习笔记&#xff08;1&#xff09;—— 基础知识-CSDN博客 Zookeeper集群搭建部分 前提&#xff1a;保证zookeeper集群处于启动状态 环境搭建 依赖配置 <dependencies><dependency><groupId>junit</groupId><arti…...

YOLOv8-Seg改进:Backbone改进 |Next-ViT堆栈NCB和NTB 构建先进的CNN-Transformer混合架构

🚀🚀🚀本文改进:Next-ViT堆栈NCB和NTB 构建先进的CNN-Transformer混合架构,包括nextvit_small, nextvit_base, nextvit_large,相比较yolov8-seg各个版本如下: layersparametersgradientsGFLOPsnextvit_small61033841075...

DocCMS keyword SQL注入漏洞复现 [附POC]

文章目录 DocCMS keyword SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 DocCMS keyword SQL注入漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测…...

利用(Transfer Learning)迁移学习在IMDB数据上训练一个文本分类模型

1. 背景 有些场景下&#xff0c;开始的时候数据量很小&#xff0c;如果我们用一个几千条数据训练一个全新的深度机器学习的文本分类模型&#xff0c;效果不会很好。这个时候你有两种选择&#xff0c;1.用传统的机器学习训练&#xff0c;2.利用迁移学习在一个预训练的模型上训练…...

pom.xml格式化快捷键

在软件开发和编程领域&#xff0c;"格式化"通常指的是将代码按照一定的规范和风格进行排列&#xff0c;以提高代码的可读性和维护性。格式化代码有助于使代码结构清晰、统一&#xff0c;并符合特定的编码规范。 格式化可以包括以下方面&#xff1a; 缩进&#xff1a…...

【短文】【踩坑】可以在Qt Designer给QTableWidge添加右键菜单吗?

2023年11月18日&#xff0c;周六上午 今天早上在网上找了好久都没找到教怎么在Qt Designer给QTableWidge添加右键菜单的文章 答案是&#xff1a;不可以 在Qt Designer中无法直接为QTableWidget添加右键菜单。 Qt Designer主要用于创建界面布局和设计&#xff0c;无法直接添加…...

Git常用配置

git log 美化输出 全局配置参数 git config --global alias.lm "log --no-merges --color --dateformat:%Y-%m-%d %H:%M:%S --authorghost --prettyformat:%Cred%h%Creset - %Cgreen(%cd)%C(yellow)%d%Cblue %s %C(bold blue)<%an>%Creset --abbrev-commit"…...

力扣每日一题-数位和相等数对的最大和-2023.11.18

力扣每日一题&#xff1a;数位和相等数对的最大和 开篇 这道每日一题还是挺需要思考的&#xff0c;我绕晕了好久&#xff0c;根据题解的提示才写出来。 题目链接:2342.数位和相等数对的最大和 题目描述 代码思路 1.创建一个数组存储每个数位的数的最大值&#xff0c;创建一…...

【win32_001】win32命名规、缩写、窗口

整数类型 bool类型 使用注意&#xff1a; 一般bool 的false0&#xff1b;true1 | 2 | …|n false是为0&#xff0c;true是非零 不建议这样用&#xff1a; if (result TRUE) // Wrong! 因为result不一定只返回1&#xff08;true&#xff09;&#xff0c;当返回2时&#xff0c…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

Qwen系列之Qwen3解读:最强开源模型的细节拆解

文章目录 1.1分钟快览2.模型架构2.1.Dense模型2.2.MoE模型 3.预训练阶段3.1.数据3.2.训练3.3.评估 4.后训练阶段S1: 长链思维冷启动S2: 推理强化学习S3: 思考模式融合S4: 通用强化学习 5.全家桶中的小模型训练评估评估数据集评估细节评估效果弱智评估和民间Arena 分析展望 如果…...

第21节 Node.js 多进程

Node.js本身是以单线程的模式运行的&#xff0c;但它使用的是事件驱动来处理并发&#xff0c;这样有助于我们在多核 cpu 的系统上创建多个子进程&#xff0c;从而提高性能。 每个子进程总是带有三个流对象&#xff1a;child.stdin, child.stdout和child.stderr。他们可能会共享…...