Linux 打包及压缩命令使用方法总结
共 3179字,需浏览 7分钟
·
2021-11-26 23:43
点击关注公众号,Java干货及时送达👇
来源:https://tanjuntao.github.io/
1. 概览
在这篇文章中,我将总结 Linux 系统下面常见的几种压缩工具,包括它们的压缩命令、解压缩命令、特殊参数等,同时,我还将介绍打包命令 tar
,以及如何将其与压缩命令同时使用。
Linux 下面的压缩命令主要有下面几个:
zip
,对应压缩文件格式:.zip
gzip
,对应压缩文件格式:.gz
bzip2
,对应压缩文件格式:.bz2
xz
,对应压缩文件格式:.xz
打包命令:
tar
,对应压缩文件格式:
.tar
如果和 gzip
一块使用:.tar.gz
或者.tgz
如果和 bzip2
一块使用:.tar.bz2
如果和 xz
一块使用:.tar.xz
所谓打包,就是将一个文件、或者一堆文件打包成一个单一文件的过程。
这里还需要说明一个术语:压缩率。其计算公式是:(压缩后文件体积) / (压缩前文件体积)。
还有一点是:gzip
bzip2
xz
这几个命令都只能对但一个文件做压缩,不能压缩一个目录,压缩目录需要通过 tar
配合这几个压缩命令来处理,或者使用 zip
命令
zip
命令能提供的功能和 tar
非常类似,更详细的使用方法使用 tldr zip
& tldr unzip
来查看。
2. 使用方法
2.1 gzip
命令
gzip
会就地压缩,也就是源文件会被压缩文件替代。
压缩
gzip
执行完上述命令,会在当前目录下生成 file_name.gz
文件。
压缩命令有个比较有用的参数:
-v
: 可以显示压缩后的压缩率
gzip -v
解压缩
gzip -d .gz
或者
gunzip .gz
会在当前目录下生成
,源压缩文件不在了。
2.2 bzip2
命令
默认情况下,bzip2
命令也是就地压缩,压缩后源文件将会被替代。
使用方法和 gzip
基本一样,但是能提供更好的压缩率,当然,付出的代价就是压缩时间更长。
压缩
bzip2
或者引入 -v
参数查看压缩率:
bzip2 -v
将在当前目录下生成
文件。
解压缩
bzip2 -d .bz2
或者
bunzip2 .bz2
2.3 xz
命令
默认情况下,xz
命令也是就地压缩,原始文件将被覆盖。
使用方法和前面提到的 gzip
bzip2
类似,参数也几乎是一样的。
压缩
xz
或者加上 -v
参数查看压缩率:
xz -v
压缩完后,会在当前目录下生成
文件。
这时可以使用 -l
参数,来查看压缩前后的文件对比信息:
xz -l .xz
举个例子如下:
tanjuntao@mbp:~/Downloads$ xz -l ppt模板.pptx.xz
Strms Blocks Compressed Uncompressed Ratio Check Filename
1 1 124.7 KiB 135.5 KiB 0.920 CRC64 ppt模板.pptx.xz
tanjuntao@mbp:~/Downloads$
解压缩
xz -d .xz
注意,在 xz
命令这里,没有 xunz
这种命令哦。
2.4 zip
命令
zip
命令和前面的 gzip
bzip2
xz
不一样,它压缩后不会覆盖原有的文件。
压缩单个文件
zip .zip
或者加入 -v
参数,可以查看压缩率:
zip -v .zip
执行上述命令,将会在当前目录下新生成
文件,原有的
将继续保留。
压缩多个文件
zip .zip a.txt b.txt c.txt
会将 a.txt, b.txt, c.txt 同时压缩到 compresed.zip 文件中。
压缩目录:
zip -r dir.zip
解压缩
unzip .zip
如果这个 .zip
文件是从多个单一文件通过zip
命令压缩来的,那么执行unzip
将会倾倒里面所有的文件到当前文件夹;如果这个 .zip
文件是从某个目录通过zip -r
压缩来的,那么执行unzip
将会在当前目录下生成一个compresed
名字的目录,目录里面的所有文件不会被倾倒在当前目录。
2.5 tar
命令
tar
命令的参数可以说是 Linux 上面最复杂且最不容易记忆的几个之一了,完整的 tar
命令的使用方法可以足够写另外一篇文章。在这里,我主要将介绍 tar
命令最核心的参数。
先解释下 tar
的作用:tar
是打包命令,也就是将一系列文件,或者某个文件夹,打包成单一文件。如果配合前面介绍的 3 种压缩命令 gzip
bzip2
xz
(不包含 zip
),那么其可以完成 打包+压缩 的功能。
tar
执行完后,原有文件或者目录将保留。
下面先介绍 tar
最常用的参数:
-c
: create 的意思,创建 tar 文件;-t
: 查看 tar 文件;-x
: 解打包或者解压缩;-z
: 用gzip
来压缩;-j
: 用bzip2
来压缩;-J
: 用xz
来压缩;-f
: 后面接需要生成的文件名;-v
: verbose 的意思,显示打包压缩或者解打包解压缩过程中的详细信息;-C
: 后面接某个目录,将文件加压缩到该特定目录下(默认是解压缩在当前目录)
只打包文件不压缩
打包单个或多个文件:
tar -cv -f target.tar a.txt b.txt c.txt d.txt
打包单个目录或者多个目录:
tar -cv -f target.tar dir1 dir2 dir3
同时打包文件和目录:
tar -cv -f target.tar dir1 dir2 a.txt b.txt c.txt
打包同时用 gzip
压缩
tar -cvz -f target.tar.gz dir1 dir2 a.txt
打包同时使用 bzip2
压缩
tar -cvj -f target.tar.bz dir1 dir2 a.txt
打包同时使用 xz
压缩
tar -cvJ -f target.tar.xz dir1 dir2 a.txt
查看
tar -tvz -f target.tar.gz
或者
tar -tvJ -f target.tar.xz
解包和解压缩
tar -xvz -f target.tar.gz
上述命令将会在当前目录下解压缩,也就是 target.tar.gz
里面的文件会解压缩到当前目录下。
如果要解压缩到指定目录怎么做呢?
使用 -C
参数:
tar -xvz -f target.tar.gz -C ~/test
上述命令,会将 target.tar.gz
里面的所有文件解压到 ~/test
目录下。
总结下:tar
命令可以将任意的文件和目录打包成一个单一文件,解压缩时,默认是将 tar ball 里面的所有文件倾倒在当前目录,如果需要倾倒到其它目录,使用 -C
参数。
2. 手把手10分钟实现 Spring Boot 发送邮件功能
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 Java 领取,更多内容陆续奉上。
文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)