Linux 压缩、解压、打包详解

在Linux 中,解压、压缩、打包是日常会很频繁用到的几个操作,但是因为参数很多,没有记忆点,加上压缩文件的类型很多,如果不经常使用,是真的容易忘记。

<!-- more -->

所以这篇笔记就是用来整理常见的那些解压、压缩、打包的命令。

在正式学习之前,需要明确的两个概念,打包和压缩不是一回事:

  • 打包:是指将一大堆文件或目录变成一个总的文件。
  • 压缩:则是将一个大文件通过压缩算法变成一个小文件。

为什么要区分这两个概念呢?这源于Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

tar

压缩/打包

仅打包,不压缩。


tar -cvf foo.tar foo

foo.tar这个文件名是自定义的,只是习惯上我们使用 .tar 作为包文件。

打包,且压缩。-z 参数表示以 .tar.gz 或者 .tgz 后缀名代表 gzip 压缩过的 tar 包。


tar -zcvf foo.tar.gz foo

打包,且压缩。-j 参数表示以 .tar.bz2 后缀名作为tar包名。


tar -jcvf foo.tar.gz foo

解压

在当前目录下直接解压:


tar -zxvf foo.tar.gz

注意,如果这个目录下有同名的文件,不会询问,直接覆盖。

解压至指定文件夹:


tar -zxvf foo.tar.gz -C <dir name>

gzip

gzip 命令用来压缩文件。文件经它压缩过后,其名称后面会多处 .gz 扩展名(不带 .tar)。

压缩

将当前目录的每个文件压缩成.gz文件:


gzip *

递归压缩指定目录的所有文件及子目录:


gzip -r <dir name>

解压

解压当前目录下的foo.gz 文件:


gzip -d foo.gz

解压完成之后,foo.gz 就变成了 foo 文件。

递归解压目录:


gzip -dr <dir name>

解压完成之后,<dir name> 目录下的所有 .gz 文件都会变成正常文件。

zip

zip 可以用来解压缩文件,或者对文件进行打包操作。文件经它压缩后会另外产生具有 .zip 扩展名的压缩文件。

压缩

将当前目录下的指定目录,压缩为 .zip文件:


zip -q -r foo.zip <dir name>

将指定目录下的所有文件及其文件夹,压缩为.zip 文件:


zip -q -r foo.zip /<path to dir>

注意,产生的压缩文件在执行命令的那个目录下。

解压

unzip 命令用于解压缩由 zip 命令压缩的 .zip压缩包。

查看压缩包内容:


unzip -v foo.zip

将压缩文件在指定目录下解压缩,如果已有相同的文件存在,要求 unzip命令不覆盖原先的文件。


unzip -n foo.zip -d /<file to dir>

将压缩文件在当前目下解压,如果已有相同的文件,不询问,直接覆盖。


unzip -o foo.zip

总结

Linux 下的压缩解压其实并不复杂,只是不常用的情况下,很容器忘记。

如果你不知道在什么场景下,该使用什么命令,可以参照:

  • 如果只有一个大文件,可以使用 gzip 或者 zip命令。
  • 如果是一个完整的目录,里面有很多子目录以及文件,可以使用tar命令。

玩转Linux
Stay foolish, Stay hungry

Stay foolish, Stay hungry

137 声望
10 粉丝
0 条评论
推荐阅读
Laravel Collection 实际使用
这篇笔记用来整理Collection 在Laravel 的实际应用场景。求和需求:遍历$orders 数组,求price 的和。 {代码...} 使用传统的foreach 方式进行遍历: {代码...} 使用集合的map、flatten、sum: {代码...} map:遍...

0xBoo阅读 1.5k

从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...

乌柏木66阅读 6.2k评论 16

从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...

乌柏木43阅读 7.4k评论 6

从零搭建 Node.js 企业级 Web 服务器(二):校验
校验就是对输入条件的约束,避免无效的输入引起异常。Web 系统的用户输入主要为编辑与提交各类表单,一方面校验要做在编辑表单字段与提交的时候,另一方面接收表单的接口也要做足校验行为,通过前后端共同控制输...

乌柏木33阅读 6.2k评论 9

从零搭建 Node.js 企业级 Web 服务器(五):数据库访问
回顾 从零搭建 Node.js 企业级 Web 服务器(一):接口与分层,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,控制层与服务层实现了业务处理过程,模型层定义了业务实体并以 对象-关系...

乌柏木34阅读 4.6k评论 9

从零搭建 Node.js 企业级 Web 服务器(十三):断点调试与性能分析
Node.js 官方提供了断点调试机制,出于安全性考虑默认为关闭状态,可以通过 node 参数 --inspect 或 --inspect-brk 开启,配合 IDE 能够非常方便地调试代码,本章就上一章已完成的项目 licg9999/nodejs-server-ex...

乌柏木31阅读 3.9k评论 9

从零搭建 Node.js 企业级 Web 服务器(八):网络安全
计算机网络依据 TCP/IP 协议栈分为了物理层、网络层、传输层、应用层,通常基础设施供应商会解决好前三层的网络安全问题,需要开发者自行解决应用层的网络安全问题,本章将着重表述应用层常见的网络安全问题及处...

乌柏木33阅读 5.8k评论 1

Stay foolish, Stay hungry

137 声望
10 粉丝
宣传栏