目录
4.zip/unzip,rar/unrar,压缩/解压zip和rar文件
1.前言
linux在网络上传输文件的时候,通常会先压缩再传输,然后解压。
说到压缩文件,如果是 Windows 用户,那应该对 rar 和 zip 两种格式不陌生。一般在 Windows 下,我们会使用 WinRAR,7-Zip 等压缩解压的软件。这些软件中有些是收费的,比如 WinRAR。
在 Linux 下,我们有很多免费的压缩解压软件可供选择,比如 gzip 和 bzip2。不过,gzip 和 bzip2,不能同时压缩多个文件,一次只能压缩一个文件。
但是,Linux 的开源社群可厉害了,他们还有一个软件 tar,算是 Linux 下用得挺多的程序了吧。tar 可以同时压缩多个文件。
当然了,Linux 下也有解压 zip 和 rar 格式的软件。
2.tar命令:归档
首先,我们需要弄清楚两个概念:打包和压缩。
- 打包 : 是将多个文件变成一个总的文件,这个总的文件我们通常称为 archive,是英语“存档,归档”的意思。
- 压缩 : 是将一个大文件通过某些压缩算法变成一个小文件。
所以,其实引言中所提到的 tar 命令,gzip 和 bzip2 命令是这样使用的:
- 用 tar 将多个文件归档为一个总的文件,称为 archive。
- 用 gzip 或 bzip2 命令将 archive 压缩为更小的文件。
可以用下图来描述此过程:
所以,我们会首先介绍 tar 命令,然后再学习 gzip 和 bzip2 命令。当然了,我们也会学习如何在 Linux 下解压 zip 和 rar 格式的文件。
zip 和 rar 格式是可以同时归档和压缩的。
将多个文件合并为一个文件
我们新建一个目录,touch命令新建三个文件:file1.txt file2.txt file3.txt
[tmn@sdw2 test]$ mkdir tar
[tmn@sdw2 test]$ cd tar
[tmn@sdw2 tar]$ touch file1.txt file2.txt file3.txt
[tmn@sdw2 tar]$ ls
file1.txt file2.txt file3.txt
[tmn@sdw2 tar]$
接下来,我们就可以用 tar 命令对这三个文件进行归档。
-cvf:创建一个 tar 归档
[tmn@sdw2 tar]$ tar -cvf file.tar .
./
./file1.txt
./file2.txt
./file3.txt
tar: ./file.tar: 文件是归档文件;未输出
[tmn@sdw2 tar]$ ls
file1.txt file2.txt file3.txt file.tar
tar 命令的这三个参数分别表示:
- c:create 的缩写,表示“创建”。
- v:verbose 的缩写,表示“冗余”。会显示操作的细节。
- f:file 的缩写,表示“文件”。指定归档文件。
因为加了 v 选项,所以列出了被归档的三个文件。
难道我们一定要先把三个文件都放到 sorting 这样的一个目录,才能用 tar 归档吗?
不是的,我们也可以直接对文件进行归档操作,不需要先把所有文件放到一个目录里,如下:
tar -cvf file.tar file1.txt file2.txt file3.txt
就会把 file1.txt,file2.txt,file3.txt 归档为 file.tar。
-tf:显示归档里的内容,并不解开归档
[tmn@sdw2 tar]$ tar -tf file.tar
./
./file1.txt
./file2.txt
./file3.txt
可以看到,file.tar 这个文件里,有三个文件:file1.txt,file2.txt,file3.txt
一般在建立归档之前,最好先把所有文件放置到一个目录里。因为假如你拿到的归档文件是不包含目录的(如上面 tar -cvf archive.tar file1.txt file2.txt file3.txt
这样),并且里面有成百上千个文件,你将其解压到你的home目录,那会乱成一团的。
-rvf:追加文件到归档
tar -rvf file.tar file4.txt
表示将 file4.txt 这个文件添加到 file.tar 归档中。
-xvf:解开归档
tar -xvf file.tar
3.gzip和bzip2命令:压缩
现在我们已经学会用 tar 命令来创建一个归档(archive)了,接下来,我们就学习如何压缩这个归档吧。
Linux 中常用的压缩命令是 gzip 和 bzip2,它们的功能类似。
- gzip:比较常用。
- bzip2:不是那么常用。压缩率比 gzip 更大,但是更耗时。
这两个命令的用法也很简单,只需传入要压缩的归档作为参数。经过压缩,归档的后缀名也会改变。
- .tar.gz:这是用 gzip 命令压缩后的文件后缀名。
- .tar.bz2:这是用 bzip2 命令压缩后的文件后缀名。
两个压缩命令的用法如下:
gzip file.tar
bzip2 file.tar
分别生成.tar.gz .tar.bz
如果要对这两个命令生成的压缩文件分别进行解压,可以使用 gunzip 和 bunzip2 两个命令:
gunzip file.tar.gz
bunzip2 file.tar.bz2
生成.tar格式的归档文件
用 tar 命令同时归档和压缩
之前我们只介绍了 tar 命令的归档作用,其实我们可以用 tar 命令同时完成归档和压缩的操作,一气呵成。
当然了,也就是给 tar 命令多加一个选项参数,使之完成归档操作后,还是调用 gzip 或 bzip2 命令来完成压缩操作。
-zcvf:归档,然后用 gzip 来压缩归档
tar -zcvf file.tar.gz .
一步到位,从 file文件,归档、压缩,生成 file.tar.gz 文件。
要解压,也可以一步到位。
tar -zxvf file.tar.gz
同理 bzip2的是
tar -jcvf file.tar.bz2 .
tar -jxvf file.tar.bz2
zcat / bzcat,zmore / bzmore,zless / bzless :显示用 gzip / bzip2 压缩的文件的内容
cat,more 和 less 这三个命令我们已经很熟悉了,是用于显示文件内容。
如果是压缩文件,比如我们上面生成的 sorting.tar.gz,如果直接用 cat,more 或 less 命令来显示,会显示乱码:
zcat查看就没有乱码:
4.zip/unzip,rar/unrar,压缩/解压zip和rar文件
尽管 .tar.gz 和 .tar.bz2 结尾的压缩文件在 Linux 世界很常见,但是如果某个 Windows 用户给你发送压缩文件,大部分情况可能是 .zip 或 .rar 结尾的压缩文件,那么在 Linux 下如何解压这类来自 Windows 世界的“外来生物”呢?
不必担心,我们可以用 unzip 和 unrar 命令来分别解压 .zip 和 .rar 格式的压缩文件。
zip / unzip :压缩 / 解压 zip 文件
一般 Linux 发行版(Ubuntu 自带了 unzip 这个命令 )中默认没有安装这个程序,我们可以用以下命令来安装:
sudo apt install unzip # 这是在 Debian 一族中的安装方式
安装完之后,要解压 .zip 格式的压缩文件,可以这样:
unzip file.zip
很简单吧。
如果不想解开 .zip 文件,只想看其中的内容的话,可以加上 -l 参数:
unzip -l file.zip
在 Linux 中,有时候我们也需要创建 .zip 格式的文件,我们可以安装 zip 这个程序(Ubuntu 自带了 zip 这个命令 ):
sudo apt install zip # 这是在 Debian 一族中的安装方式
我们来压缩一下刚才的文件试试:
zip -r file.zip .
注意:这里有一个 -r 参数(r 是 recursively 的缩写,表示“递归地”),须要加上。如果不加,则只会压缩空文件夹而已。加上 -r 参数,则会递归压缩目录和子目录中的所有文件。
rar / unrar:压缩 / 解压 rar 文件
类似于 unzip,安装 unrar 的命令如下(Ubuntu 一般没有自带 unrar 这个命令):
sudo apt install unrar # 这是在 Debian 一族中的安装方式
安装完之后,要解压 .rar 格式的压缩文件,可以这样:
unrar e file.rar
可以看到,e 这个选项参数(e 是 extract 的缩写,表示“提取,取出”)前面没有 -(短横)。
如果不想解开 .rar 文件,只想看其中的内容的话,可以加上 l 参数(是的,也不加 - ):
unrar l file.rar
在 Linux 中,有时候我们也需要创建 .rar 格式的文件,我们可以安装 rar 这个程序(Ubuntu 一般没有自带 rar 这个命令):
sudo apt install rar # 这是在 Debian 一族中的安装方式
我们来压缩一下刚才的文件试试:
rar a file.rar .
我们用了 a 参数,a 是 add 的缩写,表示“添加”。
可以看到,rar 这个软件不是免费的,我们目前用的是试用版(Trial version):
RAR 5.50 Copyright (c) 1993-2017 Alexander Roshal 11 Aug 2017
Trial version Type 'rar -?' for help
Evaluation copy. Please register.
你可以购买 rar。当然了,我们只是演示一下,暂时用试用版也足够了。
5.总结
- 打包 : 是将多个文件变成一个总的文件,这个总的文件我们通常称为 archive,是英语“存档,归档”的意思。Linux 下常用的打包命令是 tar。
- 压缩 : 是将一个大文件通过某些压缩算法变成一个小文件。Linux 下常用的压缩命令是 gzip 和 bzip2。
- Linux 中有多种方式来压缩文件。可以用 tar 命令先将文件打包(
tar -cvf archive.tar archive/
),再用 gzip 或 bzip2 命令来压缩(gzip archive.tar
或bzip2 archive.tar
)。也可以将文件一次性打包压缩(tar -zcvf archive.tar.gz archive
或tar -jcvf archive.tar.bz2 archive
)。 - zcat,zmore,zless 用于显示用 gzip 压缩的文件的内容。bzcat,bzmore,bzless 用于显示用 bzip2 压缩的文件的内容。
- zip 和 unzip 命令分别用于压缩和解压 zip 文件。rar 和 unrar 命令分别用于压缩和解压 rar 文件。