前言

文件压缩与解压缩是我们常见的操作,文件压缩在不影响文件内容的情况下,可以大大提高文件传输的速度,常见的压缩文件格式有.zip、 .gz、 .tar.gz、 .bz2等。在下载各种安装包时,我们通常都需要解压,然后再进行安装操作。本篇文章我们就一起来学习Linux中常见的压缩、解压缩命令吧!

zip

命令格式

1
zip [-r] [压缩后文件名] [文件或目录]

命令描述

  • zip命令用来对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件;
  • 在linux压缩后的文件,基本都可以在Windows系统中解压;Windows中压缩的文件,在Linux中不一定可用,但是zip格式的压缩文件,可以做到可用;
  • zip的压缩比不是很高;

选项

  • -r: 递归处理,将指定目录下的所有文件和子目录一并处理,用于压缩目录
  • -x:压缩时排除符合条件的文件

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 1. 压缩文件
# 添加一个文件
[root@VM-0-5-centos tmp]# touch a.txt
# 压缩文件
[root@VM-0-5-centos tmp]# zip a.zip a.txt
  adding: a.txt (stored 0%)
# 查看压缩后的文件
[root@VM-0-5-centos tmp]# ls
a.txt  a.zip  

# 2. -r:压缩文件夹
[root@VM-0-5-centos tmp]# ls testDir/
dir  hello.java  world.java

[root@VM-0-5-centos tmp]# zip -r test.zip testDir/
  adding: testDir/ (stored 0%)
  adding: testDir/dir/ (stored 0%)
  adding: testDir/hello.java (stored 0%)
  adding: testDir/world.java (stored 0%)

[root@VM-0-5-centos tmp]# ls
a.txt  a.zip    testDir  test.zip

# 3. -x 排除文件
[root@VM-0-5-centos tmp]# zip -r test2.zip testDir/ -x "testDir/hello*" -x "testDir/dir/*"
  adding: testDir/ (stored 0%)
  adding: testDir/world.java (stored 0%)

unzip

命令格式

1
unzip [选项] 文件名

命令描述

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

选项

  • -n:解压缩时不要覆盖原有的文件;
  • -o:不必先询问用户,unzip执行后覆盖原有的文件;
  • -d <目录>:指定文件解压缩后所要存储的目录(不指定目录,默认解压到当前目录)

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 解压文件到家目录
[root@VM-0-5-centos tmp]# unzip test.zip -d ~
Archive:  test.zip
   creating: /root/testDir/
   creating: /root/testDir/dir/
 extracting: /root/testDir/hello.java
 extracting: /root/testDir/world.java

# 查看解压后的文件夹
[root@VM-0-5-centos tmp]# ls ~
testDir

gzip

命令格式

1
gzip [文件]

命令描述

gzip命令 用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后的拓展名为'.gz'。gzip只能压缩文件,不能压缩文件夹,压缩后原文件会被删除

gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

示例

1
2
3
4
5
6
7
# 新建文件
[root@VM-0-5-centos tmp]# touch a.txt
# 压缩文件
[root@VM-0-5-centos tmp]# gzip a.txt
# 查看压缩后的文件,源文件被删除
[root@VM-0-5-centos tmp]# ls
a.txt.gz

gunzip

命令格式

1
gzip [文件]

命令描述

gunzip命令用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为.gz。

示例

1
2
3
4
5
6
7
[root@VM-0-5-centos tmp]# ls
a.txt.gz 

# 解压文件,解压后压缩文件被删除
[root@VM-0-5-centos tmp]# gunzip a.txt.gz
[root@VM-0-5-centos tmp]# ls
a.txt 

tar

命令格式

1
tar [选项] [压缩后文件名] [目录]

命令描述

打包目录,将目录打包成一个文件,同时可以压缩,压缩后的拓展名为.tar.gz,这个拓展名在下载Linux相关安装包时很常见。

使用tar命令时,如果想要打包并压缩一个目录,可以有两种方法进行:

  1. 先利用tar命令打包目录为一个文件,然后使用gzip压缩
  2. 直接利用tar命令打包并压缩 (简单方便,推荐使用)

解压时也有两种方式:

  1. 先使用gunzip解压缩,再使用tar解包
  2. 直接利用tar命令解压缩并解包 (简单方便,推荐使用)

选项

  • -c:打包
  • -x:解包
  • -v:显示详细信息
  • -f:指定文件名
  • -z:打包同时压缩/解压缩

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 1、2为打包压缩的两种方法
# 1. 使用 tar -cvf 打包,然后使用gzip压缩
[root@VM-0-5-centos ~]# mkdir movie
[root@VM-0-5-centos ~]# ls
movie
[root@VM-0-5-centos ~]# tar -cvf movie.tar movie/
movie/
[root@VM-0-5-centos ~]# ls
movie  movie.tar
[root@VM-0-5-centos ~]# gzip movie.tar
[root@VM-0-5-centos ~]# ls
movie  movie.tar.gz

# 2. 使用 tar -zcvf 打包并压缩
[root@VM-0-5-centos ~]# tar -zcvf movie2.tar.gz movie
movie/
[root@VM-0-5-centos ~]# ls
movie  movie2.tar.gz  movie.tar.gz

# 3、4为解压缩并解包的两种方法

# 3. 先使用gunzip解压缩,然后 tar -xvf解包
[root@VM-0-5-centos ~]# ls
movie  movie2.tar.gz  movie.tar.gz
[root@VM-0-5-centos ~]# rm -rf movie
[root@VM-0-5-centos ~]# ls
movie2.tar.gz  movie.tar.gz
[root@VM-0-5-centos ~]# gunzip movie.tar.gz
[root@VM-0-5-centos ~]# ls
movie2.tar.gz  movie.tar
[root@VM-0-5-centos ~]# tar -xvf movie.tar
movie/
[root@VM-0-5-centos ~]# ls
movie  movie2.tar.gz  movie.tar

# 4. 使用tar -zxvf 解压缩并解包
[root@VM-0-5-centos ~]# ls
movie  movie2.tar.gz  movie.tar
[root@VM-0-5-centos ~]# rm -rf movie
[root@VM-0-5-centos ~]# tar -zxvf movie2.tar.gz
movie/
[root@VM-0-5-centos ~]# ls
movie  movie2.tar.gz  movie.tar

bzip2

命令格式

1
bzip2 [选项] [文件]

命令描述

  • bzip2命令用于压缩“.bz2”格式的压缩包,是gzip的升级版本,可以保留原文件;
  • bzip2的压缩比比较高,可用于压缩较大文件的压缩;
  • bzip2也是只对文件进行压缩,如果相对目录进行压缩的话,可以配合 tar 命令使用,使用 tar -jcvf 文件名 完成打包压缩。

选项

-k(keep):保留原文件(不删除原文件)

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# bzip2 压缩文件
[root@VM-0-5-centos ~]# touch love.txt
[root@VM-0-5-centos ~]# bzip2 -k love.txt
[root@VM-0-5-centos ~]# ls
love.txt  love.txt.bz2

# 配合使用tar 命令,完成打包压缩
[root@VM-0-5-centos ~]# mkdir music
[root@VM-0-5-centos ~]# tar -jcvf music/
[root@VM-0-5-centos ~]# tar -jcvf music.tar.bz2 music/
music/
[root@VM-0-5-centos ~]# ls
music  music.tar.bz2

bunzip2

命令格式

1
bunzip2 [选项] [文件]

命令描述

  • 解压缩“.bz2”格式的压缩文件;
  • gunzip的升级版,可以使用-k保留原文件;
  • 可以配合使用tar命令,完成解压缩解包: tar -jxvf 文件名

选项

-k(keep):保留原文件(不删除原文件)

示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[root@VM-0-5-centos ~]# rm  -rf love.txt music
[root@VM-0-5-centos ~]# ls
love.txt.bz2  music.tar.bz2

# 解压缩文件
[root@VM-0-5-centos ~]# bunzip2 -k love.txt.bz2
[root@VM-0-5-centos ~]# ls
love.txt  love.txt.bz2  music.tar.bz2

# 使用tar完成解压解包
[root@VM-0-5-centos ~]# tar -jxvf music.tar.bz2
music/
[root@VM-0-5-centos ~]# ls
love.txt  love.txt.bz2  music  music.tar.bz2

总结

本文介绍了Linux文件压缩与解压缩相关的命令:

  • zip、unzip:压缩和解压缩具有“.zip”扩展名的压缩文件,源文件会被保留。
  • gzip、gunzip:压缩和解压缩具有“.gz”扩展名的压缩文件,gzip只能压缩文件,不能压缩目录,同时源文件会被删除。
  • bzip2、bunzip2:压缩和解压缩具有“.bz2”扩展名的压缩文件,gzip、gunzip命令的升级版,可以通过‘-k’选项保留源文件。
  • tar:将目录打包成一个文件,同时可以结合其他选项,完成gzip、bzip2的文件压缩。

更多

微信公众号:CodePlayer