zip 命令的解释与示例
创始人
2024-03-02 14:28:42
0

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

这篇文章是 Linux 命令学习系列的一部分。

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.txtfile2.txtfile3.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 中基本压缩命令的输出

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

  • 当创建一个 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 压缩的默认输出包含两个不同的词,即 deflatestore。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 手册 中了解更多。


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

作者:Arindam 选题:lkxed 译者:Chao-zhi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

zip

相关内容

bzip2支持的文件类型
要确定bzip2支持的文件类型,可以使用以下代码示例:import...
2025-01-12 23:02:07
bzip2解压是否可以继续...
可以使用python中的bz2模块来实现继续bzip2解压。具体代...
2025-01-12 23:01:50
bzip2是否允许在块或流...
bzip2不支持在块或流级别进行随机访问解压缩。bzip2压缩算法...
2025-01-12 23:01:46
不一致的输出:zip()函...
当使用zip()函数时,如果输入的迭代对象的长度不一致,会导致输出...
2025-01-11 08:31:47
不需要解压文件即可阅读7-...
要实现“不需要解压文件即可阅读7-zip”的功能,你可以使用Pyt...
2025-01-10 14:00:43
不同的bash脚本中zip...
在不同的bash脚本中,可能会存在一些环境差异或变量名冲突等导致z...
2025-01-08 12:01:11

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...