Linux下有许多压缩文件与解压缩文件的命令,主要包括 gzip、bzip2、tar、rar、zip。
gzip
gzip
将文件压缩为 .gz
格式,其指令格式如下:
gzip [选项] 源文件
选项:
-c
:将压缩数据输出到标准输出中,可以用于保留源文件。-d
:解压缩-r
:压缩目录(实质是压缩目录下的每一个文件)。
比如我们要压缩 test.txt
文件:
我们可以看到 test.txt
文件被压缩为 test.txt.gz
,且 test.txt
文件被删除了。
如果我们想保留 test.txt
文件,可以使用 -c
将压缩数据输出到标准输出中,再使用 >
重定向至 test.txt.gz
:
需要注意的是,gzip
无法打包文件,所以即使是压缩目录,也只是分别压缩目录下的每一个文件:
解压缩文件,即可以使用 -d
参数,可以使用 gunzip
命令:
bzip2
bzip2
用于将文件压缩为 .bz2
格式,理论上讲,.bz2
格式的压缩算法更先进、压缩比更好,而 .gz
格式相对来讲压缩时间更快。
bzip2
指令格式如下:
bzip2 [选项] 源文件
选项:
-d
:解压缩-k
:压缩时保留源文件-v
:显示压缩的详细信息
比如我们需要压缩 test.txt
并保留源文件:
这个命令不能压缩目录,否则会报错。
即可以使用 bzip2 -d
解压缩,也可以使用 bunzip2
解压缩:
tar
tar
如果不加特殊选项只是对文件进行打包(并不压缩),其指令格式如下:
tar [选项] [-f 压缩包名] 源文件或目录
选项:
-c
:打包;-f
:指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名;-v
:显示打包文件的过程;-x
:解打包。
比如我们要将 a.txt
、b.txt
、c.txt
打包成 test.tar
:
如果我们要解打包 test.tar
:
我们可以添加特别选项来进行压缩:
-z
:压缩和解压缩.tar.gz
格式;-j
:压缩和解压缩.tar.bz2
格式。
默认解压到当前目录,我们可以使用 -C
指定解压的目录。
# 压缩
[root@hepingfly hepingfly]# tar -jcvf test.gz.bz2 abd.txt bcd.txt
abd.txt
bcd.txt
[root@hepingfly hepingfly]# ll
总用量 24
-rw-r--r--. 1 root root 160 2月 25 23:11 test.gz.bz2
---------------------------------------------------------------
# 解压缩
[root@hepingfly hepingfly]# tar -jxvf test.gz.bz2
abd.txt
bcd.txt
----------------------------------------------------------------
# 压缩
[root@hepingfly hepingfly]# tar -zcvf test.tar.gz abd.txt bcd.txt
abd.txt
bcd.txt
[root@hepingfly hepingfly]# ll
总用量 12
-rw-r--r--. 1 root root 0 2月 22 02:09 abd.txt
-rw-------. 1 hepingfly hepingfly 0 2月 21 00:37 bcd.txt
-rw-r--r--. 1 root root 154 2月 25 23:14 test.tar.gz
----------------------------------------------------------------
# 解压缩
[root@hepingfly hepingfly]# tar -zxvf test.tar.gz
abd.txt
bcd.txt
--------------------------------------------------------------
# 只查看不解压
[root@hepingfly hepingfly]# tar -ztvf test.tar.gz
-rw-r--r-- root/root 0 2019-02-22 02:09 abd.txt
-rw------- hepingfly/hepingfly 0 2019-02-21 00:37 bcd.txt
--------------------------------------------------------------
# 解压到指定目录(-C 一定要跟在压缩包后面)
[root@hepingfly hepingfly]# tar -zxvf test.tar.gz -C aaaa/
abd.txt
bcd.txt
--------------------------------------------------------------
# 解压指定文件
[root@hepingfly hepingfly]# tar -ztvf test.tar.gz # 我先查看这个压缩包里面有哪些文件
-rw-r--r-- root/root 0 2019-02-22 02:09 abd.txt
-rw------- hepingfly/hepingfly 0 2019-02-21 00:37 bcd.txt
[root@hepingfly hepingfly]# tar -zxvf test.tar.gz -C aaaa/ abd.txt
abd.txt
# 我只把 abd.txt 文件解压到 aaaa 目录下
rar
.rar
是 Windows 中常见的压缩格式,Linux 也可正确识别 .rar
格式,这可以方便和 Windows 系统通用压缩文件,其指令格式如下:
rar a 生成文件名 源文件或源目录 # 压缩文件
rar x 压缩包 指定目录 # 解压文件
需要注意的是,Linux不自带 rar
压缩工具,需要自己下载安装:
sudo apt install rar
比如我们要压缩文件 a.txt
、b.txt
、c.txt
到 test.rar
:
解压缩 test.rar
到 ~/Desktop
:
zip
.zip
也是 Windows 中最常用的压缩格式,Linux 也可正确识别 .zip
格式,这可以方便和 Windows 系统通用压缩文件,其指令格式如下:
zip [选项] 压缩包名 源文件或源目录
选项:
-r
:压缩目录。
比如我们要将 a.txt
、b.txt
、c.txt
压缩为 test.zip
文件:
这里的 stored 0%
表示没有进行压缩,因为 *.txt
文件里什么都没有,如果压缩可能会导致文件更大,正常压缩会出现 deflated xx%
表示压缩率为 xx%
,即压缩后的文件大小是原文件的 (100-xx)%
。
可以使用 unzip
命令解压缩 .zip
格式文件,其指令格式如下:
unzip [选项] 压缩包名
选项:
-d
:指定压缩位置。
比如,我们想解压缩 test.zip
到 ~/Desktop
下: