zip 命令的解释与示例
这是一份关于理解 Linux 中的 zip 命令的初学者指南，并附有一些例子。
zip
这是一份关于理解 Linux 中的 zip 命令的初学者指南，并附有一些例子。

> 
> 这是一份关于理解 Linux 中的 zip 命令的初学者指南，并附有一些例子。
> 
> 
> 


![](/data/attachment/album/202302/14/144901jd8d9m161m1q8dm0.jpg)


这篇文章是 [Linux 命令](https://www.debugpoint.com/category/linux-commands)学习系列的一部分。


zip 文件是一个包含一个或多个文件的压缩档案。它作为一种无损数据压缩技术被广泛使用。由于压缩，它占用的磁盘空间更少，在计算机网络上传输时需要的数据也更少。


这些压缩文件可以在 Linux、Windows 和 macOS 中轻松提取。有各种支持压缩 zip 文件的软件，也提供提取它们的功能。


由于它很流行，几乎所有的操作系统都内置了这个功能。


在本教程中，我们将谈论几种基于终端的方法来压缩 Linux 中的文件。


### Linux 中的 Zip 命令示例


#### 语法


在 Linux 中，你需要使用的压缩文件的程序名称是 `zip`。下面是基本的语法：



```
zip [压缩文件名] file1 file2 file3

```

以下是正式的语法：



```
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]

```

理想情况下，`zip` 命令应该被安装在所有主流的 Linux 发行版中。如果没有，使用下面的命令来安装它。


#### 在 Debian、Ubuntu 和相关发行版上安装



```
sudo apt install zip

```

#### 在 Fedora、基于 RHEL 的系统上安装



```
sudo dnf install zip

```

#### 在 Arch Linux 上安装



```
pacman -S zip

```

让我们继续看一些例子。


#### 如何压缩文件和文件夹


我的测试目录中有以下三个文件。它们是 `file1.txt`、`file2.txt` 和 `file3.txt`。如果我想用 zip 压缩三个文件，并创建一个 `myfiles.zip` 的压缩包，用下面的命令就可以了。



```
zip myfiles.zip file1.txt file2.txt file3.mp3

```

输出：



```
adding: file1.txt (stored 0%)
adding: file2.txt (stored 0%)
adding: file3.mp3 (deflated 13%)

```

![Linux 中基本压缩命令的输出](/data/attachment/album/202302/14/144907zza6qlo0la2ttgmo.jpg)


这里你应该记住几个要点。


* 当创建一个 zip 文件时，你应该有对当前目录的修改权限。
* zip 文件格式不包含权限，即读（4）、写（2），和执行（1）。所以，创建该文件的用户成为该文件的所有者。
* 如果你想使用带有权限的 zip，可以尝试使用 `tar` 命令（将在后面的教程中解释）。
* 在上面的输出中，`zip` 命令显示了被添加到存档中的文件名和压缩方法。
* 在目标文件名中指定 .zip 文件名的扩展名并不是必须的。如果你省略了 .zip，`zip` 会在最后加上 .zip。


当你操作成百上千的文件时，为了减少终端中的输出，你可以使用 `-q` 参数来抑制 `zip` 命令中的输出：



```
zip -q myfiles.zip file1.txt file2.txt file3.txt

```

#### 递归压缩子文件夹


`zip` 命令的 `-r` 选项使你能够囊括所有子目录。这个选项会递归地遍历到一个目录结构的最后一个子目录，并将它们全部加入到压缩文件中。


下面的命令创建了一个包含 `my_folder` 内所有内容和子目录的压缩文件：



```
zip -r myfolder.zip my_folder

```

你也可以使用通配符（`*`）在你的压缩文件中包含特定类型的文件：



```
zip -0 my_movies.zip *.mp4

```

#### 混合添加文件和目录到压缩文件


有了以上所有的选项，`zip` 命令允许你把文件和目录一起作为参数指定。



```
zip -r myfiles.zip file1.txt file2.txt file3.txt my_folder1 my_folder2

```

### 压缩算法


zip 压缩的默认输出包含两个不同的词，即 `deflate` 和 `store`。zip 默认使用的压缩方法是 `deflate`。如果它成功地压缩了文件，那么输出显示 `deflate`。而当它不能压缩一个文件时，它只是将它们原封不动地存储在 .zip 文件中。这些文件的输出显示为 `store`。


目前有许多压缩算法。其中一种是 bzip2 压缩法，在 Linux 中的 `zip` 命令支持它。你可以指定压缩算法作为一个命令选项来使用。使用选项 `-Z`，后面跟上算法名称，如下所示：



```
zip -r -Z bzip2 myfolder.zip my_folder

```

#### 压缩级别


`zip` 命令还允许你指定压缩级别。压缩级别是指你想让 zip 优化多少来减少包的大小。它是一个从 0 到 9 的数值范围。压缩级别为 9 的值是最高的压缩。默认值是 6。


记住，如果你用 zip 压缩成千上万个大小不一的文件，它可能会占用较多的系统资源，并花费大量的时间。所以，如果你在程序中使用它，或者用 shell 脚本处理大量的文件，请遵循正确的编程标准。



```
zip -9 -r myfolder.zip my_folder

```

#### 用密码保护一个压缩文件


你也可以用下面的 `-e` 选项对压缩文件进行密码保护：



```
zip -e -r myfolder.zip my_folder

```

运行该命令后，它将要求输入密码。



> 
> 注意。尽量不要使用 zip 命令来对压缩文件进行密码保护。zip 的加密算法是使用流式加密的 PKZIP。而它很容易被破解。如果你想保护你的文件，请使用 7-Zip 或其他高级工具。
> 
> 
> 


#### 分割较大的压缩文件


许多应用程序、服务器和文件共享可能包含固定大小的文件上传限制。例如，你有一个 10GB 的文件，但服务只允许每个文件 1GB。使用 `zip` 的 `-s` 选项，你可以将其压缩并分割成几块进行上传。



```
zip -s 1g -r myfolder.zip my_folder

```

### 总结


你学到了一些 `zip` 命令的基本知识。它对大多数本地情况很有用，在这些情况下，你需要通过即时压缩来进行快速备份。然而，对于更高级的选项，你应该使用 7-Zip 或其他命令，我将在接下来的几篇文章中分享。


同时，你可以在 [zip 手册](https://linux.die.net/man/1/zip) 中了解更多。




---


via: <https://www.debugpoint.com/zip-command-linux-examples/>


作者：[Arindam](https://www.debugpoint.com/author/admin1/) 选题：[lkxed](https://github.com/lkxed) 译者：[Chao-zhi](https://github.com/Chao-zhi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出

