linux 中常用的压缩和解压缩命令详解(tar zip)

2023-10-27

在工作中,涉及到文件传输,为了减少文件的体积和传输的时间,经常会对文件进行压缩,本文介绍了linux系统中常用的压缩和解压缩命令


一、tar命令

.tar:简单封装,被称为归档文件,只是简单的将文件组装到一个.tar的文件内,并没有太多文件体积的减少,仅仅是简单的封装
.gz:压缩体积,常见为.tar.gzgzip格式压缩文件是使用gzip压缩算法将文件压缩到一个文件内,可以极大的减少压缩后的体积
一般使用tar命令进行压缩文件,会结合以上两者

语法:tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N

  • -c:创建的意思,表示创建压缩文件,用于压缩模式
  • -v:表示显示压缩、解压的过程,用于查看进度
  • -x解压模式
  • -f:表示要创建压缩的文件或要解压的文件,并且-f选项必须在所有选项中位置处于最后一个
  • -zgzip模式,使用该选项会极大减少压缩文件的体积,不使用-z就是普通的归档文件的作用,不会减少体积
  • -C:选择解压的目的地,用于解压的模式

1. 压缩

# 将a.txt b.txt c.txt 压缩到test.tar文件内,只是简单封装,没有减少体积
tar -cvf test.tar a.txt b.txt c.txt

在这里插入图片描述
压缩前三个文件的大小总共为11.6K,进行普通组装之后为20K,反而增加了。

# 将a.txt b.txt c.txt 压缩到test.tar.gz文件内,使用gzip模式进行压缩,会极大的减少test.tar的体积
tar -zcvf test.tar.gz a.txt b.txt c.txt

在这里插入图片描述
压缩前三个文件的大小总共为11.6K,进行gzip模式压缩之后之后为1.8K,对比简单封装,极大减少的压缩文件的体积。

在使用tar命令进行压缩的时候,-z选项如果使用,一般处于选项位的第一个;-f选项必须在选项的最后一个。

2. 解压

使用tar命令进行解压,和压缩是对应的,除此之外还可以使用-C指定解压路径

# 解压test.tar, 将文件解压到当前目录
tar -xvf test.tar

# 解压test.tar, 将文件解压到指定目录下
tar -xvf test.tar -C /home

# 以gzip模式解压test.tar.gz, 将文件解压到指定目录下
tar -zxvf test.tar.gz -C /home

在使用tar命令进行解压的时候,-z选项如果使用,一般处于选项位的第一个;-f选项必须在选项的最后一个;-C选项单独使用。


二、zip命令

zip命令进行压缩和解压缩,比较简单,压缩文件为zip压缩包

1. 压缩

语法:zip [-r] 参数1 参数2 ... 参数N

  • -r:被压缩的内容包含文件夹的时候,需要使用-r选项
# 将a.txt b.txt c.txt 压缩到test.zip文件内
zip test.zip a.txt b.txt c.txt

# 将test1文件夹、test2文件夹、a.txt压缩到test.zip文件内
zip -r test.zip test1 test2 a.txt

2. 解压

语法:unzip [-d] 参数

  • -d:表示指定要解压去的位置,和tar命令的-C选项作用一样
  • 参数:表示被解压的zip压缩包文件
# 将test.zip解压到当前目录
unzip test.zip

# 将test.zip解压到指定的文件夹内
unzip test.zip -d /home

三、文件加密压缩和密码解压

1. tar命令

使用tar命令进行加密压缩时需要和OpenSSL进行结合

1.1 加密压缩

语法:tar -zcvf - a.txt b.txt | openssl des3 -salt -k 123456 -out /root/test/test.tar.gz

  • -:该参数后跟的是被压缩的具体文件,*表示当前路径下所有文件
  • -k: 该参数后跟密码,本示例密码是123456
  • -out:该参数后为输出的压缩文件

在这里插入图片描述

使用gzip模式压缩当前路径下的a.txt b.txt文件到当前目录/root/test下,压缩文件名称为test.tar.gz, 压缩密码为123456

1.2 密码解压

语法:openssl des3 -d -k 123456 -salt -in /root/test/test.tar.gz | tar zxvf - -C /root/test1

  • -k:该参数后跟的是密码,示例中密码为123456
  • -in:该参数后跟的是压缩文件,示例中是/root/test/test.tar.gz
  • -:表示释放所有的文件
  • -C:表示解压的路径

在这里插入图片描述
使用tar命令解压加密文件/root/test/test.tar.gz/root/test1目录下,解压密码为123456

2. zip命令

2.1 加密压缩

语法:zip -rP 123456 /root/test/test.zip a.txt b.txt*

  • -rp:文件夹加密,示例中密码为123456

使用zip命令压缩当前路径下的a.txt b.txt文件到当前目录/root/test下,压缩文件名称为test.zip, 压缩密码为123456

2.2 密码解压

语法:unzip -uP 123456 /root/test/test.zip -d /root/test1

  • -uP:加压密码参数,示例密码为123456

使用unzip命令解压加密文件/root/test/test.zip/root/test1目录下,解压密码为123456

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux 中常用的压缩和解压缩命令详解(tar zip) 的相关文章

  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • 使用脚本检查 git 分支是否领先于另一个分支

    I have branch1 and branch2我想要某种 git branch1 isahead branch2 这将显示如果branch1已承诺branch2没有 也可能指定这些提交 我无法检查差异原因branch2 is在之前br
  • 使用 ioctl 在 C++ 中以编程方式添加路由

    我编写了简单的 C 函数 添加了新路线 void addRoute int fd socket PF INET SOCK DGRAM IPPROTO IP struct rtentry route memset route 0 sizeof
  • 更新Linux中的包含路径

    我的 my path to file 文件夹中有几个头文件 我知道如何将这些文件包含在新的 C 程序中 但每次我都需要在包含它之前输入头文件的完整路径 我可以在linux中设置一些路径变量 以便它自动查找头文件吗 您可以创建一个 makef
  • 链接错误:命令行中缺少 DSO

    我对 Linux 使用 Ubuntu 14 04 LTS 64 位 相当陌生 来自 Windows 并且正在尝试移植我现有的 CUDA 项目 当通过链接时 usr local cuda bin nvcc arch compute 30 co
  • 使用 libusb 输出不正确

    我用libusb编写了一个程序 我怀疑输出是否正确 因为所有条目都显示相同的供应商和产品 ID 以下是代码 include
  • 如何并行执行4个shell脚本,我不能使用GNU并行?

    我有4个shell脚本dog sh bird sh cow sh和fox sh 每个文件使用 xargs 并行执行 4 个 wget 来派生一个单独的进程 现在我希望这些脚本本身能够并行执行 由于某些我不知道的可移植性原因 我无法使用 GN
  • LINUX:如何锁定内存中进程的页面

    我有一个 LINUX 服务器 运行一个具有大量内存占用的进程 某种数据库引擎 该进程分配的内存太大 需要将其中一部分换出 换出 我想做的是将所有其他进程 或正在运行的进程的子集 的内存页面锁定在内存中 以便只有数据库进程的页面被换出 例如
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • Linux 使用 boost asio 拒绝套接字绑定权限

    我在绑定套接字时遇到问题 并且以用户身份运行程序时权限被拒绝 这行代码会产生错误 acceptor new boost asio ip tcp acceptor io boost asio ip tcp endpoint boost asi
  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 适用于 Linux 的轻量级 IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh

随机推荐

  • Puppet

    1 Puppet简介 Puppet使用一种描述性语言来定义配置项 配置项中被称为 资源 描述性语言可以声明用户的配置状态 比如声明一个软件包应该被安装或一个服务应该被启动等 Puppet可以运行在一台服务器端 每个客户端通过SSL证书连接到
  • 机器学习在工业应用中的新思考

    人工智能在学术界默默发展了很多很多年 从最早的神经网络 到10年前风靡的SVM bagging and boosting 如今的深度学习 日新月异 各领风骚数几年 工业界的发展从最早应用于纯粹的互联网企业 近几年开始应用到更多更广泛的场景
  • Win32环境下两种用于C++的线程同步类

    线程同步是多线程程序设计的核心内容 它的目的是正确处理多线程并发时的各种问题 例如线程的等待 多个线程访问同一数据时的互斥 防死锁等 Win32提供多种内核对象和手段用于线程同步 如互斥量 信号量 事件 临界区等 所不同的是 互斥量 信号量
  • RPC流程一 - proto编写

    参考 https github com goyas goya rpc tree master src 对RPC中的Server端和Client端流程进行整理 代码目录 CMakeLists txt config cmake sample e
  • 手把手教你用代码实现 SSO 单点登录

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 每天 14 00 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框
  • SSH连接慢的问题

    维护linux经常需要使用ssh进行连接 但是有时会很郁闷的发现ssh连接部分机器的时候特别的慢 之前写过一篇文章
  • 【数字IC精品文章收录】近500篇文章

    数字IC全站文章索引demo版 建议收藏慢慢看 一 项目说明 1 1 索引目的 1 2 收录原则 1 3 投稿方式 1 4 版本迭代 二 数字IC学习路线 三 通用技能篇 3 1 数字电路 3 2 硬件描述语言 Verilog 3 3 li
  • React常见面试题

    React常见面试题 1 说说你对react的理解 有哪些特性 2 说说Real DOM和Virtual DOM的区别 优缺点 3 说说React生命周期有哪些不同的阶段 每个阶段对应的方法 4 说说React中setState执行机制 5
  • 【应用笔记】Sub-1G系列产品CW32W031单片机CAD应用参考

    一 功能介绍 CW32W031 的射频部分支持 CAD 中断 从 Deepsleep 进入 STB3 开启 CAD 功能并进入 RX 模式后 CW32W031 会检测信道中是否会有 ChirpIOT 信号 如果存在将 CAD IRQ 置高
  • 袁红岗的程序员修炼之道

    袁红岗的程序员修炼之道 转载引言 袁红岗1994年加盟金蝶 1996年在整个行业还处在DOS时代时最早成功开发出基于Windows平台的金蝶财务软件 开创了依靠技术创新推动企业快速发展的典范 1998年成功开发出基于三层结构组件技术的金蝶K
  • 解决Jenkins报告在浏览器无法显示问题

    在使用jenkins定时启动并收集测试报告的过程中 发现在jenkins上配置的HTML Report打开之后样式不对 页面一片空白 打开开发者模式 发现页面有很多脚本报错 提示有很多资源文件被禁止加载了 百度之后 发现这个是jenkins
  • 【JavaScript】花点时间了解执行上下文

    引言 当我们在浏览器中运行JavaScript代码时 浏览器会先创建一个全局执行上下文 Global Execution Context 然后逐行解析和执行代码 执行上下文是JavaScript中非常重要的概念 它决定了代码的执行顺序和作用
  • Echarts图例legend选中select状态动态更新(踩坑)

    今天计划实现一个小功能 但是却在细节上浪费了大量的时间 特此记录 想要实现的功能是这样的 如下一个ECharts图 后台会一次性接收85条曲线的数据 但在初始化的时候只显示前7条曲线 官方文档 给出了 legend selected 这个属
  • U++ 截屏并拿到所有的截屏资源

    void APluginUseActor spotScreen TArray
  • Qt5下Qxlsx模块安装及使用

    文章目录 1 未安装Qxlsx的程序效果 2 安装Perl 编译Qxlsx源码用 2 1 下载 ActivePerl 5 28 2 2 安装 ActivePerl 5 28 3 下载并编译Qxlsx源码 3 1 下载Qxlsx源码 3 2
  • 树结构(有id和pid字段)数组,生成多层嵌套的json对象

    传入的数组有id和父节点pid字段 通过它们的关联构造成一棵或多棵树结构 param nodes 集合 param treeRootId 根节点的id function createTreeData nodes treeRootId var
  • 【模拟电路】电极驱动H桥

    H桥式驱动电路 是因为它的形状酷似字母H 如图 当Q1和Q4导通时 电机正转 当Q2和Q3导通时 电机反转 任何时候 H桥同一侧的晶体管不能同时导通 否则就会造成电源和地之间短路 电机正转 电机反转 一个双电机驱动电路 H桥 设计思路 使用
  • 深度学习图片数据集分析手段--个人经验小结

    当拿到一批图片数据集的时候 我应该做哪些分析 这里是我自己从业过程中的一些分析手段 从哪里学习的已经不可考 如果有其他的大家觉得有用的分析 可以和我分享一下 避免我自己闭门造车 这里根据已知的信息量分类两种情况 1 只有图片数据 没有标注数
  • Airsim探索01

    Airsim github地址 https github com microsoft AirSim git 官方文档 https microsoft github io AirSim use precompiled
  • linux 中常用的压缩和解压缩命令详解(tar zip)

    文章目录 一 tar命令 1 压缩 2 解压 二 zip命令 1 压缩 2 解压 三 文件加密压缩和密码解压 1 tar命令 1 1 加密压缩 1 2 密码解压 2 zip命令 2 1 加密压缩 2 2 密码解压 在工作中 涉及到文件传输