前言
文件压缩与解压缩是我们常见的操作,文件压缩在不影响文件内容的情况下,可以大大提高文件传输的速度,常见的压缩文件格式有.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
命令格式
命令描述
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
命令格式
命令描述
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
命令格式
命令描述
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
命令格式
命令描述
打包目录,将目录打包成一个文件,同时可以压缩,压缩后的拓展名为.tar.gz,这个拓展名在下载Linux相关安装包时很常见。
使用tar
命令时,如果想要打包并压缩一个目录,可以有两种方法进行:
- 先利用tar命令打包目录为一个文件,然后使用gzip压缩
- 直接利用tar命令打包并压缩 (简单方便,推荐使用)
解压时也有两种方式:
- 先使用gunzip解压缩,再使用tar解包
- 直接利用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
命令格式
命令描述
- 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
命令格式
命令描述
- 解压缩“.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