Linux命令——tar与gzip详解:文件的打包压缩与解压缩解打包

article/2025/9/2 13:30:09

Linux系统中,最常用的打包命令就是tar了,不仅如此,tar命令还可以解打包解压缩,十分方便。如果单纯想压缩文件,就需要我们的gzip命令了。

使用tar打包归档的包叫做tar包,以.tar结尾
使用gzip压缩的文件,以.gz结尾
日常使用中,特别是对目录及里面的文件,一般先进行tar打包再进行gzip压缩,此时的文件以.tar.gz结尾

tar命令的打包操作

基本格式:

tar [参数] [打包后的目录或文件(以.tar结尾)] [打包前的目录或源文件]
例:tar -cvf demo.tar demo

各参数及含义如下表所示:

参数含义
-c做打包操作,可将多个文件或目录进行打包
-v显示打包过程
-f后接包名(必须要写)指明要打包的目录或源文件的名称

注意一点,在tar命令中,参数前的“-”可以省略,即“-cvf”与“cvf”的功能是一样的。

举个栗子🌰:
对文件或者目录进行打包操作

文件:tar -cvf demo.tar demo
目录:tar -cvf test.tar test0/

执行结果如下
对文件进行打包操作:
在这里插入图片描述
对目录进行打包操作:
在这里插入图片描述

tar命令的解打包操作

基本格式:

tar [参数] [包名称]
例:tar -xvf abc.tar

各参数及含义如下表所示:

参数含义
-x做解打包操作
-v显示解打包过程
-f后接包名(必须要写)指明要解打包的tar包的包名
-t查看tar包中有哪些文件或目录,不做解打包操作
-C(大写)指定解打包的具体位置

注意一点,“-C”参数可以不写,此时默认解打包在当前目录下

举个栗子🌰:
1⃣️将文件解打包到当前目录

tar -xvf ab.tar

结果如下图所示:
在这里插入图片描述
2⃣️将文件解打包到指定目录

tar -xvf abc.tar -C test0/

结果如下图所示:
在这里插入图片描述

gzip命令的压缩(解压缩)操作

基本格式:

gzip [参数(可省略)] [源文件]
例:gzip demo

常用参数及含义如下表所示:

参数含义
-c保留源文件的压缩,需要配合“>”
-d对压缩文件进行解压缩
-r递归压缩指定目录下以及子目录下的所有文件
-v对于每个压缩和解压缩的文件,显示相应的文件名和压缩比
-numbernumber表示压缩等级,number为1 表示压缩等级最低,压缩比最差;number为9 压缩比最高。默认压缩比是 number为6

注意:gzip命令比较灵活,其后可以不加参数直接加源文件,此时直接对源文件进行压缩,但会自动删除掉源文件

举个栗子🌰:
1⃣️gzip不接参数直接压缩源文件

gzip demo

演示结果全程如下所示:
在这里插入图片描述
2⃣️gzip压缩并保留源文件

gzip -c abc > abc.gz

演示结果如下图所示:
在这里插入图片描述
3⃣️gzip压缩目录

gzip -r test/

演示结果如下图所示:
在这里插入图片描述
观察栗子可以发现, 用gzip压缩目录的话,gzip只会将目录中的文件进行压缩,并不会对目录进行压缩。
如果想对目录进行压缩的话,必须先用tar命令对其打包,然后对该打包文件进行gzip压缩

4⃣️gzip解压缩

gzip -d demo.gz

演示结果如下图所示:
在这里插入图片描述

读到这,不少读者可能会觉得Linux下的打包压缩太不灵活了吧,特别针对目录的操作,岂不是要一步步的输入命令。
其实不然,tar命令有一步进行打包压缩的操作,也有一步进行解压缩解打包的操作。笔者这么写是方便大家一步步的理解整个打包压缩的过程。

tar命令的一体化打包压缩(解压缩解打包)操作

基本格式:

tar [参数] [压缩包名称] [源文件或目录]
# “源文件或目录”只在打包压缩时用到,“解压缩解打包不会用”
例:tar -zcvf demo.tar.gz demo # 将文件demo打包压缩为demo.tar.gz
例:tar -zxvf demo.tar.gz      # 将文件demo.tar.gz解压缩解打包为demo

常用参数及含义如下表所示:

参数含义
-z一步压缩和解压缩 “.tar.gz” 格式
-j一步压缩和解压缩 ".tar.bz2"格式

举个栗子🌰:
1⃣️将文件一步压缩为.tar.gz或.tar.bz2格式:

tar -zcvf demo.tar.gz demo
tar -jcvf abc.tar.bz2 abc
# 注意参数z与j及压缩包的后缀名

演示结果如下图所示:
在这里插入图片描述
该例子不局限于对文件,还可以对目录进行压缩,并且压缩完源文件保留

2⃣️将文件一步解打包解压缩:

# 先把之前的demo,abc两文件删除掉
tar -zxvf demo.tar.gz
tar -jxvf abc.tar.bz2

演示结果如下图所示:
在这里插入图片描述
如上所示,解压缩解打包后源文件依旧保留

小结

一般日常中比较常用的参数组合有两种:
打包用“-cvf”
压缩用“-xvf”
如果考虑一步打包压缩或者解压缩解打包,按需添加“-z”,“-j”参数

参考资料

[1] CSDN博客:Linux文件的压缩和解压命令tar
[2] CSDN博客:linux .gz文件 压缩与解压缩命令
[3] C语言中文网:Linux tar打包命令详解
[4] C语言中文网:Linux gzip命令:压缩文件或目录


http://chatgpt.dhexx.cn/article/j8DUGLKs.shtml

相关文章

Linux 下使用 tar 命令打包指定目录下的所有文件,不包括目录

一,问题描述 无论是 Linux 系统,还是 macOS 系统,我们都可以使用 tar 命令进行文件的压缩打包。命令格式如下: # tar cvf xxxx.tar 要压缩的文件或目录名称但如果要压缩的目录层级比较多时,比如: # tar cvf…

linux tar (打包、压缩、解压)命令

打包程序:tar c: 创建文档t: 列出存档内容x:提取存档f: filename 要操作的文档名v:详细信息 一:打包 打包:是指把文件整合在一起,不压缩 1.将文件打包:tar cf a.ta…

(21)tar打包命令详解

Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁盘中进行归档。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包。1.tar命令做打包操作  当 tar 命令用于打包操作时,该命令的基本格式为: …

vector中删除某个指定元素

class Solution { public:int removeElement(vector<int>& v, int val) {for (auto it v.begin(); it ! v.end(); it) {if (*it val) { // 条件语句v.erase(it); // 移除他it--; // 让该迭代器指向前一个}}return v.size();} };

vector删除指定元素

C vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。 C 中std::remove()并不删除元素&#xff0c;因为容器的size()没有变化&#xff0c;只是元素的替换。 1.std::vector::erase() 函数原型&#xff1a;iterator erase (iterator position);  //删除指定…

C++中vector中删除/添加指定位置处的元素

1、函数介绍 C中vector容器可以删除/添加制定位置处的元素&#xff0c;分别使用erase()与insert()函数。其中函数内需要两个参数&#xff0c;第一个为指定删除/添加的位置&#xff0c;第二个元素为删除/添加的元素值。 iterator insert(const_iterator _Where, _Ty&&…

C/C++ vector 删除指定元素

C vector 删除符合条件的元素C vector中实际删除元素使用的是容器vecrot中std::vector::erase()方法。C 中std::remove()并不删除元素&#xff0c;因为容器的size()没有变化&#xff0c;只是元素的替换。1.std::vector::erase()  函数原型&#xff1a;iterator erase (iterat…

【c++】vector中删除元素

目录 1.删除指定范围的元素2.删除指定大小的元素3.C20 std::erase, std::erase_if (std::vector)注意点 1.删除指定范围的元素 vector删除元素之pop_back(),erase(),remove() 向量容器vector的成员函数pop_back()可以删除最后一个元素. 而函数erase()可以删除由一个iterator指…

光纤光学原理相关基础知识点

记&#xff1a;研究生导师的方向是光纤光学和机器学习交叉的&#xff0c;导师给推荐了本书&#xff0c;书里面的理论和推导公式作为小白的我真的是不太行&#xff0c;后来在中国大学mooc上找了视频课跟着学习&#xff0c;顺便做下笔记&#xff0c;为日后使用&#xff0c;因此会…

机器人学重点知识点总结

机器人学重点知识点总结 坐标转换与机械臂运动学雅克比矩阵机械臂逆向动力学&#xff08;牛顿欧拉递推&#xff09;机械臂正向动力学运动轨迹生成动力学轨迹跟踪控制 这篇博客主要用来记录一下现代机器人学里面比较基础也比较重要的一些知识点&#xff0c;所有内容均仅仅记录是…

大学物理(下)知识点总结

大学物理&#xff08;下&#xff09;知识点总结&#xff08;持续更新&#xff09; 文章目录 大学物理&#xff08;下&#xff09;知识点总结&#xff08;持续更新&#xff09;静电场知识点总结习题精选 磁场知识点总结习题精选 期中复习总结电磁场知识点总结习题精选 狭义相对论…

Lumerical官方案例、FDTD时域有限差分法仿真学习(二)——宽带光栅耦合器(Broadband grating coupler (2D))

这个 2D FDTD 示例展示了如何获得光栅耦合器的宽带特性&#xff0c;并将结果与实验数据进行比较。 此外&#xff0c;该应用示例演示了多频波束计算的正确使用和优势&#xff0c;并将结果与标准单频波束计算进行了比较。 要更好地了解单频和多频波束计算之间的差异&#xff0c;请…

三维计算机视觉(四)--关键点

关键点又称为感兴趣的点&#xff0c;是低层次视觉通往高层次视觉的捷径&#xff0c;抑或是高层次感知对低层次处理手段的妥协。 RangeImage 1.关键点&#xff0c;线&#xff0c;面 关键点特征点&#xff1b; 关键线边缘&#xff1b; 关键面foreground&#xff1b; 上述三个概…

信号完整性基础04:串扰(1)

说在开头&#xff1a;关于x射线&#xff08;2&#xff09; 1895年11月8日&#xff0c;德国维尔茨堡大学的一间实验室里&#xff0c;校长伦琴正在做克鲁克斯管实验&#xff0c;当时房间没开灯&#xff0c;屋子里一片漆黑&#xff0c;放电管用黑纸包得很严实&#xff0c;他突然发…

基于地平面的单目视觉里程计绝对尺度估计

点击上方“3D视觉工坊”&#xff0c;选择“星标” 干货第一时间送达 ●论文摘要 对于基于单目相机的系统来说&#xff0c;从单目相机中恢复绝对度量尺度是一个具有挑战性的问题。利用有限的已知条件&#xff0c;提出了多种尺度估计方法&#xff0c;如根据相机的高度、物体大小等…

comsol 学习笔记【基础知识,磁场与结构场耦合为主】

感悟 随时补充学习中的感悟&#xff0c;放在开头是为了后来者在学习过程中有所参考。 掌握基本操作&#xff0c;学会寻找资料先看基础视频&#xff0c;然后找专题视频&#xff0c;再去学习案例&#xff08;以官方视频优先、案例配有相关的文件&#xff09;学习案例会涉及到其…

硬件工程师面试基础知识点

目录 一、晶振电路 二、LDO选型 1.LDO工作原理 2.输入电压 3.效率 4.功耗 5.电源抑制比PSRR 6.线性调整率 Line Regulation 7.负载调节率 (Load Regulation) 8.静态电流 9.噪声 10.输出电容器 11.反向泄漏保护 12.RF、音频的应用 三、DC-DC 1.降压转换器-Buck…

PCL—关键点检测(NARF)低层次点云处理

博客转载自&#xff1a;http://www.cnblogs.com/ironstark/p/5051533.html 关键点检测本质上来说&#xff0c;并不是一个独立的部分&#xff0c;它往往和特征描述联系在一起&#xff0c;再将特征描述和识别、寻物联系在一起。关键点检测可以说是通往高层次视觉的重要基础。但本…

HFSS----环形定向耦合器的设计实例

1:设置终端求解类型 2&#xff1a;创建物体模型 设置单位 设置一个变量表示传输线终端到圆心的距离 添加新的介质材料 创建正多边体 创建完成以后 可以通过“ctrlD”全屏显示 创建环形带状线 创建矩形面 通过复制生成其他3根传输线 创建圆面 合并圆面和4个传输线 在生成一个圆…

<论文阅读> RF-LIO:高动态环境中首先移除动态点的紧耦合激光雷达惯性里程计

继续在家读文献&#xff5e; 希望下周能继续打工&#xff0c;最近还是更多的关注激光里程计相关的方向。 论文地址&#xff1a;Removal-First Tightly-coupled Lidar Inertial Odometry in High Dynamic Environments 摘要&#xff1a;同步定位和建图&#xff08;SLAM&#x…